home *** CD-ROM | disk | FTP | other *** search
/ Aminet 44 / Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso / Aminet / game / demo / Mattonite.lha / Mattonite / Mattonite.AMOS / Mattonite.amosSourceCode
AMOS Source Code  |  2001-06-28  |  76KB  |  2,307 lines

  1. '-> Mattonite by Stefano Regattin
  2. 'i> 2 ottobre 1996 
  3. 'm> 3,8,12,13,14,19,25,27,31 ottobre 1996
  4. 'm> 9 novembre 1996
  5. 'm> 12 novembre 1997 
  6. 'm> 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 maggio 2000 
  7. 'm> 1,4,5,6,7,8,9,11,13,14,23,26,27,28 giugno 2000 
  8. 'm> 16,17,18,19,23,24 luglio 2000
  9. 'm> 5,12,13,14,15,30 agosto 2000 
  10. 'm> 1,10,11,26 settembre 2000
  11. 'm> 12,15,24,25,26,31 ottobre 2000 
  12. 'm> 2,16,17,21,23 novembre 2000
  13. 'm> 3 dicembre 2000
  14. 'm> 5,7,8,9,10,11,13,14,17,18,22,25,26,27,28 febbraio 2001 
  15. 'm> 1 marzo 2001 
  16. 'm> 15,22,23,26 aprile 2001
  17. 'm> 19,20,22,26,27,29 maggio 2001
  18. 'm> 1,2,3,4,5,9,10,12,25,28 giugno 2001
  19. '----------------------------------------------------------------------------- 
  20. Set Buffer 20
  21. OGGETTI$="MattoniteOggetti.Abk"
  22. SUONI$="MattoniteSuoni.Abk"
  23. PUNTEGGI$="TopHundredScores"
  24. VERO=-1
  25. FALSO=0
  26. ALTEZZAFONT=8
  27. BANCO=65535
  28. IMMAGINIBOING=8
  29. IMMAGINIPAPERO=4
  30. IMMAGINIRUBAPALLINA=11
  31. LARGHEZZAPANNELLO=48
  32. MASSIMOBOINGINCAMPO=3
  33. MASSIMOMATTONCINIDARIDISEGNARE=83
  34. MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO=8
  35. MASSIMOPALLINEINCAMPO=5
  36. OGGETTORIGA=0
  37. OGGETTOMATTONCINODIPOTENZIAMENTO=1
  38. OGGETTOBOING=OGGETTOMATTONCINODIPOTENZIAMENTO+MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
  39. OGGETTOCENTRODELLABARRA=OGGETTOBOING+MASSIMOBOINGINCAMPO
  40. OGGETTOLATIDELLABARRA=OGGETTOCENTRODELLABARRA+1
  41. OGGETTOPAPERO=251
  42. OGGETTORUBAPALLINA=252
  43. OGGETTOLASER=253
  44. OGGETTORAGGIOLASER=254
  45. OGGETTOPALLINA=OGGETTOPAPERO-MASSIMOPALLINEINCAMPO
  46. PRIMAPARTITA=VERO
  47. RITARDODELLENTRATAINCAMPODEIBOING=-1000
  48. SEMITONO#=1.05946
  49. SUONICARICATI=VERO
  50. VOCE=1
  51. Dim GIOCATORE$(99),PUNTEGGIO$(99)
  52. Dim DELTAXPALLINA#(MASSIMOPALLINEINCAMPO-1)
  53. Dim DELTAYPALLINA#(MASSIMOPALLINEINCAMPO-1)
  54. Dim VELOCITADELLAPALLINA#(MASSIMOPALLINEINCAMPO-1)
  55. Dim XPALLINA#(MASSIMOPALLINEINCAMPO-1),YPALLINA#(MASSIMOPALLINEINCAMPO-1)
  56. Dim BOING(MASSIMOBOINGINCAMPO-1),C0LORE(31),DURATADELLARIGA(2)
  57. Dim DURATADELRIDISEGNODELMATTONCINO(MASSIMOMATTONCINIDARIDISEGNARE-1)
  58. Dim IMMAGINEBOING(IMMAGINIBOING-1),IMMAGINEPAPERO(IMMAGINIPAPERO-1)
  59. Dim IMMAGINERUBAPALLINA(IMMAGINIRUBAPALLINA-1),INGOMBRODELLABARRA(2)
  60. Dim LAPALLINAERIMASTAINCOLLATAALLABARRA(MASSIMOPALLINEINCAMPO-1)
  61. Dim LAPALLINAHACOLPITOLABARRA(MASSIMOPALLINEINCAMPO-1)
  62. Dim LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(MASSIMOPALLINEINCAMPO-1)
  63. Dim MATTONCINO(246),MATTONCINODARIDISEGNARE(MASSIMOMATTONCINIDARIDISEGNARE-1)
  64. Dim MATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  65. Dim PALLINA(MASSIMOPALLINEINCAMPO-1)
  66. Dim VOCE(3),X0ZONA(246),XBOING(MASSIMOBOINGINCAMPO-1)
  67. Dim XCOLLA(MASSIMOPALLINEINCAMPO-1)
  68. Dim XMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  69. Dim Y0ZONA(246),YBOING(MASSIMOBOINGINCAMPO-1),YCOLLA(MASSIMOPALLINEINCAMPO-1)
  70. Dim YMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  71. Global VERO,FALSO
  72. Global CENTOGIOCATORI$,OGGETTI$,PERCORSO$,PERCORSODEILIVELLI$
  73. Global PERCORSODELLAGRAFICA$,PERCORSODELLAMUSICA$,PUNTEGGI$,SUONI$
  74. Global SEMITONO#
  75. Global ALTEZZAFONT,BANCO,BOINGINCAMPO,BONUS,C0LLA,C0LORIDELLOSCHERMOMENOUNO
  76. Global DISTANZADELMATTONCINOPIUVICINOALPAPERO,IMMAGINELASER,IMMAGINEPALLINA
  77. Global IMMAGINEPAPERO,IMMAGINERAGGIOLASER,IMMAGINIBOING,IMMAGINIPAPERO
  78. Global IMMAGINERIGADUE,IMMAGINERIGATRE,IMMAGINERIGAUNO,IMMAGINERUBAPALLINA
  79. Global IMMAGINIRUBAPALLINA,LARGHEZZAPANNELLO,LASER,LIVELLO,LUNGHEZZADELLABARRA
  80. Global LUNGHEZZADELLABARRACAMBIATA,MASSIMOBOINGINCAMPO
  81. Global MASSIMOMATTONCINIDARIDISEGNARE,MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
  82. Global MASSIMOPALLINEINCAMPO,MATTONCINI,MATTONCINIDIPOTENZIAMENTO
  83. Global MATTONCINIRIMASTI,MATTONCINODATROVAREPERILPAPERO,MATTONCINOPERILPAPERO
  84. Global OGGETTOBOING,OGGETTOCENTRODELLABARRA,OGGETTOLASER,OGGETTOLATIDELLABARRA
  85. Global OGGETTOMATTONCINODIPOTENZIAMENTO,OGGETTOPALLINA,OGGETTOPAPERO
  86. Global OGGETTORAGGIOLASER,OGGETTORIGA,OGGETTORUBAPALLINA
  87. Global PALLINAPRESADALRUBAPALLINA,PALLINASCELTADALRUBAPALLINA,PALLINE
  88. Global PALLINEINCAMPO,_PAPEROINCAMPO,POSIZIONE,PUNTEGGIO,PUNTEGGIOMASSIMO
  89. Global RAGGIOLASERSPARATO,RIGA,RIMBALZODELLEPALLINESUIMATTONCINI,RITARDOBOING
  90. Global RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA
  91. Global RITARDODELLENTRATAINCAMPODEIBOING
  92. Global RITARDODELLENTRATAINCAMPODELRUBAPALLINA,RUBAPALLINACOLPITO
  93. Global SUONICARICATI,TASTO,TASTOGRIGIO,T0GLILARIGA,VOCE,XBARRA,XFINALERIGA
  94. Global XLASER,XPANNELLO,XPAPERO,XRIGA,XRUBAPALLINA,YBARRA,YLASER,YPAPERO
  95. Global YRUBAPALLINA
  96. Global GIOCATORE$(),PUNTEGGIO$()
  97. Global DELTAXPALLINA#(),DELTAYPALLINA#(),VELOCITADELLAPALLINA#(),XPALLINA#()
  98. Global YPALLINA#()
  99. Global BOING(),C0LORE(),DURATADELLARIGA(),DURATADELRIDISEGNODELMATTONCINO()
  100. Global IMMAGINEBOING(),IMMAGINEPAPERO(),IMMAGINERUBAPALLINA()
  101. Global INGOMBRODELLABARRA(),LAPALLINAERIMASTAINCOLLATAALLABARRA()
  102. Global LAPALLINAHACOLPITOLABARRA(),LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA()
  103. Global MATTONCINO(),MATTONCINODARIDISEGNARE(),MATTONCINODIPOTENZIAMENTO()
  104. Global PALLINA(),VOCE(),X0ZONA(),XBOING(),XCOLLA()
  105. Global XMATTONCINODIPOTENZIAMENTO(),YBOING(),YCOLLA()
  106. Global YMATTONCINODIPOTENZIAMENTO(),Y0ZONA()
  107. Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA
  108. Proc IMPOSTAIPERCORSIDEIFILE
  109. Proc IMPOSTALOSCHERMO
  110. Proc CARICAGLIOGGETTI
  111. Proc IMPOSTAGLIOGGETTI
  112. Proc IMPOSTAICOLORI
  113. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  114. Proc TROVAILFONTDATA70
  115. Proc DISSOLVENZADEICOLORI[$FFF,1,1]
  116. Hide 
  117. Proc IMPOSTALARCOBALENO
  118. If SUONICARICATI=VERO Then Proc CARICAISUONI
  119. Proc CARICAILLIVELLO
  120. Proc DABANCOAVARIABILI
  121. Proc METTIILPANNELLO
  122. Proc CREALEIMMAGINIPERLERIGHE
  123. Proc IMPOSTALEZONEDEIMATTONCINI
  124. Proc METTIECONTAIMATTONCINI
  125. Proc IMPOSTALINGOMBRODELLABARRA
  126. Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  127. Proc IMPOSTALADURATADELLERIGHE
  128. Proc DISSOLVENZADEICOLORI[$FFF,1,2]
  129. Proc IMPOSTAILAMPEGGI
  130. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  131. Repeat 
  132.  Proc MOSTRAICREDITI
  133.  Proc MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  134.  TESTOINTRODUTTIVO$="Press left mouse button to play."+Chr$(10)
  135.  TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"Press right mouse button to exit."
  136.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,21,1,500]
  137.  If TASTO=-1
  138.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  139.   C0LLA=FALSO
  140.   DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  141.   DURATADELLARIGA=-1
  142.   INIZIODELLIVELLO=VERO
  143.   LASER=0
  144.   LIVELLO=0
  145.   LUNGHEZZADELLABARRA=1
  146.   LUNGHEZZADELLABARRACAMBIATA=LUNGHEZZADELLABARRA
  147.   PALLINASCELTATADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  148.   PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  149.   PALLINE=5
  150.   PALLINEINCAMPO=1
  151.   _PAPEROINCAMPO=FALSO
  152.   PUNTEGGIO=0
  153.   RIGA=0
  154.   RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  155.   XBARRA=X Screen(X Mouse)
  156.   YBARRA=247
  157.   If PRIMAPARTITA=FALSO
  158.    Proc CANCELLAIMATTONCINI
  159.    Proc CARICAILLIVELLO
  160.    Proc DABANCOAVARIABILI
  161.    Proc METTIECONTAIMATTONCINI
  162.   Else 
  163.    PRIMAPARTITA=FALSO
  164.   End If 
  165.   Repeat 
  166.    Proc IMPOSTAILRIMBALZODELLEPALLINE
  167.    Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  168.    Proc AGGIORNAILPANNELLO
  169.    If INIZIODELLIVELLO=VERO
  170.     TESTOINIZIOGIOCO$="Get ready for level"+Str$(LIVELLO)+"!"+Chr$(10)
  171.     TESTOINIZIOGIOCO$=TESTOINIZIOGIOCO$+"Press a (mouse) key to begin..."
  172.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  173.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINIZIOGIOCO$,22,20,1,500]
  174.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  175.     Proc IMPOSTAIBOING
  176.     If SUONICARICATI=VERO
  177.      Sam Play VOCE,1 : Proc VOCESEGUENTE
  178.     Else 
  179.      Bell 20
  180.     End If 
  181.     INIZIODELLIVELLO=FALSO
  182.    End If 
  183.    For PALLINA=0 To PALLINEINCAMPO-1
  184.     PALLINA(PALLINA)=VERO
  185.     XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
  186.     YPALLINA#(PALLINA)=YBARRA-3
  187.    Next PALLINA
  188.    Repeat 
  189.     TASTOCLICCATODELTOPO=Mouse Click
  190.     XBARRA=X Screen(X Mouse)
  191.     Proc MOSTRALABARRA
  192.     Proc CAMBIALALUNGHEZZADELLABARRA
  193.     Proc LIMITAIMOVIMENTIDELLABARRA
  194.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  195.      If PALLINA(PALLINA)=VERO
  196.       XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
  197.       YPALLINA#(PALLINA)=YBARRA-3
  198.       Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
  199.      End If 
  200.     Next PALLINA
  201.     Proc MOSTRAILLASER
  202.     If T0GLILARIGA>0
  203.      If XRIGA>0
  204.       Dec XRIGA
  205.      End If 
  206.      Proc MOSTRALARIGA[T0GLILARIGA]
  207.     Else 
  208.      If RIGA>0
  209.       If XRIGA<XFINALERIGA
  210.        Inc XRIGA
  211.        Proc MOSTRALARIGA[RIGA]
  212.       End If 
  213.      End If 
  214.     End If 
  215.     Proc MATTONCINIDIPOTENZIAMENTO[0,0]
  216.     Proc BOINGINCAMPO
  217.     Bob Update 
  218.     TASTOPREMUTO$=Inkey$
  219.     TASTOGRIGIO=Key Shift
  220.     TASTOSCANSITO=Scancode
  221.     Exit If TASTOPREMUTO$=Chr$(27)
  222.     If TASTOGRIGIO=4
  223.      If TASTOSCANSITO=80 : Rem F1 key 
  224.       Add LUNGHEZZADELLABARRACAMBIATA,1,0 To 2
  225.      Else If TASTOSCANSITO=81 : Rem F2 key 
  226.       Add PALLINEINCAMPO,1,1 To 5
  227.       For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  228.        If PALLINA<PALLINEINCAMPO
  229.         PALLINA(PALLINA)=VERO
  230.        Else 
  231.         PALLINA(PALLINA)=FALSO
  232.         Proc CANCELLALAPALLINA[PALLINA]
  233.        End If 
  234.       Next PALLINA
  235.      Else If TASTOSCANSITO=82 : Rem F3 key 
  236.       If LASER=-1
  237.        LASER=1
  238.       Else If LASER=1
  239.        LASER=2
  240.       Else If LASER=2
  241.        LASER=3
  242.       Else If LASER=3
  243.        LASER=0
  244.       End If 
  245.      Else If TASTOSCANSITO=83 : Rem F4 key 
  246.       If RIGA>0 and T0GLILARIGA=0
  247.        T0GLILARIGA=RIGA
  248.       End If 
  249.       Add RIGA,1,0 To 3
  250.      Else If TASTOPREMUTO$=" "
  251.       Proc MATTONCINIDIPOTENZIAMENTO[-Rnd(18)-1,0]
  252.      End If 
  253.     End If 
  254.    Until TASTOCLICCATODELTOPO>0
  255.    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  256.     If PALLINA<PALLINEINCAMPO
  257.      PALLINA(PALLINA)=VERO
  258.      VELOCITADELLAPALLINA#(PALLINA)=1
  259.      D1REZIONEXPALLINA=Rnd(1)
  260.      If D1REZIONEXPALLINA=1
  261.       DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
  262.      Else 
  263.       DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  264.      End If 
  265.      DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  266.     Else 
  267.      PALLINA(PALLINA)=FALSO
  268.      Proc CANCELLALAPALLINA[PALLINA]
  269.     End If 
  270.    Next PALLINA
  271.    Repeat 
  272.     TASTOCLICCATODELTOPO=Mouse Click
  273.     If TASTOCLICCATODELTOPO=1
  274.      For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  275.       LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
  276.      Next PALLINA
  277.     Else If TASTOCLICCATODELTOPO=2
  278.      Proc HAISPARATOILRAGGIOLASER
  279.     End If 
  280.     XBARRA=X Screen(X Mouse)
  281.     Proc MOSTRALABARRA
  282.     Proc CAMBIALALUNGHEZZADELLABARRA
  283.     Proc LIMITAIMOVIMENTIDELLABARRA
  284.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  285.      If PALLINA(PALLINA)=VERO
  286.       If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
  287.        XPALLINA#(PALLINA)=XBARRA-XCOLLA(PALLINA)
  288.        YPALLINA#(PALLINA)=YBARRA-YCOLLA(PALLINA)
  289.       Else 
  290.        XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+DELTAXPALLINA#(PALLINA)
  291.        YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+DELTAYPALLINA#(PALLINA)
  292.        If TILTPALLINA=VERO
  293.         XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+XTILTPALLINA
  294.         YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+YTILTPALLINA
  295.        End If 
  296.        If XPALLINA#(PALLINA)>XPANNELLO-1-3
  297.         XPALLINA#(PALLINA)=XPANNELLO-1-3
  298.         DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  299.         If SUONICARICATI=VERO
  300.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  301.         Else 
  302.          Boom 
  303.         End If 
  304.        Else If XPALLINA#(PALLINA)<3
  305.         XPALLINA#(PALLINA)=3
  306.         DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  307.         If SUONICARICATI=VERO
  308.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  309.         Else 
  310.          Boom 
  311.         End If 
  312.        Else If YPALLINA#(PALLINA)<3
  313.         YPALLINA#(PALLINA)=3
  314.         DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  315.         If SUONICARICATI=VERO
  316.          Sam Play VOCE,2,8363*2 : Proc VOCESEGUENTE
  317.         Else 
  318.          Boom 
  319.         End If 
  320.        End If 
  321.        If TILTPALLINA=VERO
  322.         Add XTILTPALLINA,-Sgn(XTILTPALLINA)
  323.         If XTILTPALLINA>0
  324.          XTILTPALLINA=Max(XTILTPALLINA,0)
  325.         Else If XTILTPALLINA<0
  326.          XTILTPALLINA=Min(XTILTPALLINA,0)
  327.         End If 
  328.         Add YTILTPALLINA,-Sgn(YTILTPALLINA)
  329.         If YTILTPALLINA>0
  330.          YTILTPALLINA=Max(YTILTPALLINA,0)
  331.         Else If YTILTPALLINA<0
  332.          YTILTPALLINA=Min(YTILTPALLINA,0)
  333.         End If 
  334.         Screen Display 0,128+XTILTPALLINA,44+YTILTPALLINA,320,256
  335.         If XTILTPALLINA=0 and YTILTPALLINA=0
  336.          TILTPALLINA=FALSO
  337.         End If 
  338.        Else 
  339.         If TASTOPREMUTO$=" "
  340.          XTILTPALLINA=Rnd(32)-16 : YTILTPALLINA=Rnd(32)-16 : TILTPALLINA=VERO
  341.         End If 
  342.        End If 
  343.       End If 
  344.       Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
  345.       If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
  346.        Proc MATTONCINOCOLPITODALLAPALLINA[PALLINA]
  347.        Proc LAPALLINAHACOLPITOLABARRA[PALLINA]
  348.        Proc LAPALLINAHACOLPITOLARIGA[PALLINA]
  349.        Proc LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
  350.       End If 
  351.      End If 
  352.     Next PALLINA
  353.     Exit If TASTOPREMUTO$=Chr$(27)
  354.     TASTOPREMUTO$=Inkey$
  355.     Exit If TASTOPREMUTO$=Chr$(27)
  356.     Proc MOSTRAILLASER
  357.     Proc MOSTRAILRAGGIOLASER
  358.     TASTOGRIGIO=Key Shift
  359.     SHIFTSINISTRO=Btst(0,TASTOGRIGIO)
  360.     SHIFTDESTRO=Btst(1,TASTOGRIGIO)
  361.     TASTOMAIUSCOLE=Btst(2,TASTOGRIGIO)
  362.     TASTISHIFTPREMUTI=SHIFTSINISTRO or SHIFTDESTRO or TASTOMAIUSCOLE
  363.     If TASTISHIFTPREMUTI=FALSO
  364.      Proc MATTONCINOCOLPITODALRAGGIOLASER
  365.     End If 
  366.     Proc MATTONCINIDIPOTENZIAMENTO[0,0]
  367.     If T0GLILARIGA>0
  368.      If XRIGA>0
  369.       Dec XRIGA : Proc MOSTRALARIGA[T0GLILARIGA]
  370.      Else 
  371.       Proc T0GLILARIGA : DURATADELLARIGA=-1
  372.      End If 
  373.     Else 
  374.      If RIGA>0
  375.       If XRIGA<XFINALERIGA
  376.        Inc XRIGA : Proc MOSTRALARIGA[RIGA]
  377.       Else 
  378.        If DURATADELLARIGA=-1
  379.         DURATADELLARIGA=DURATADELLARIGA(RIGA-1)
  380.        Else If DURATADELLARIGA=0
  381.         T0GLILARIGA=RIGA : RIGA=0
  382.        Else 
  383.         Dec DURATADELLARIGA
  384.        End If 
  385.       End If 
  386.      End If 
  387.     End If 
  388.     If _PAPEROINCAMPO=VERO
  389.      Proc _PAPEROINCAMPO
  390.     End If 
  391.     If RITARDODELLENTRATAINCAMPODELRUBAPALLINA=0
  392.      ENTRATAINCAMPODELRUBAPALLINA=Rnd(2)>1
  393.      If ENTRATAINCAMPODELRUBAPALLINA=VERO
  394.       Proc RUBAPALLINAINCAMPO
  395.      End If 
  396.     Else 
  397.      Dec RITARDODELLENTRATAINCAMPODELRUBAPALLINA
  398.     End If 
  399.     Proc BOINGINCAMPO
  400.     Bob Update 
  401.     For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  402.      If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)>0
  403.       MATTONCINO=MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)
  404.       If MATTONCINO>0
  405.        X0MATTONCINO=X0ZONA(MATTONCINO-1)
  406.        Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
  407.        TIPODIMATTONCINO=MATTONCINO(MATTONCINO-1)
  408.        If TIPODIMATTONCINO=0
  409.         Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
  410.        Else 
  411.         Paste Bob X0MATTONCINO,Y0MATTONCINO,82+TIPODIMATTONCINO
  412.        End If 
  413.       End If 
  414.       Dec DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)
  415.      End If 
  416.     Next MATTONCINODARIDISEGNARE
  417.     If BONUS>0
  418.      If RITARDODELDECREMENTODELBONUS=9
  419.       RITARDODELDECREMENTODELBONUS=0 : Dec BONUS : Proc MOSTRAILBONUS[FALSO]
  420.      Else 
  421.       Inc RITARDODELDECREMENTODELBONUS
  422.      End If 
  423.     End If 
  424.     Exit If MATTONCINI=0
  425.    Until PALLINEINCAMPO=0
  426.    Proc CANCELLALABARRA
  427.    Proc CANCELLALEPALLINE
  428.    Proc T0GLIILLASER
  429.    Proc CANCELLAILRAGGIOLASER
  430.    Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO
  431.    Proc CANCELLAILRUBAPALLINA
  432.    Proc CANCELLAILPAPERO : _PAPEROINCAMPO=FALSO
  433.    Proc CANCELLAIBOING
  434.    Proc CANCELLALARIGA
  435.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  436.    Exit If TASTOPREMUTO$=Chr$(27)
  437.    If MATTONCINI=0
  438.     Proc AGGIUNGIALPUNTEGGIOILBONUS
  439.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  440.     Proc AGGIORNAILPANNELLO
  441.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  442.     Proc AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
  443.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  444.     Proc AGGIORNAILPANNELLO
  445.     Inc LIVELLO
  446.     INIZIODELLIVELLO=VERO
  447.    End If 
  448.    If PALLINEINCAMPO>0
  449.     Proc CANCELLAIMATTONCINI
  450.     Proc CARICAILLIVELLO
  451.     Exit If LIVELLO=-1
  452.     Proc DABANCOAVARIABILI
  453.     Proc METTIECONTAIMATTONCINI
  454.    Else 
  455.     Dec PALLINE : PALLINEINCAMPO=1
  456.     C0LLA=FALSO
  457.     If LASER>0
  458.      Dec LASER
  459.     End If 
  460.     If SUONICARICATI=VERO
  461.      Sam Play VOCE,5 : Proc VOCESEGUENTE
  462.     Else 
  463.      Boom 
  464.     End If 
  465.    End If 
  466.   Until PALLINE=0
  467.   If TASTOPREMUTO$<>Chr$(27)
  468.    Proc AGGIUNGIALPUNTEGGIOILBONUSPERLEPALLINERIMASTEAFINEGIOCO
  469.    Proc FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
  470.    Proc SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  471.    Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  472.   End If 
  473.   GREETING$="The game is finished."+Chr$(10)
  474.   GREETING$=GREETING$+"I hope you have enjoyed."+Chr$(10)
  475.   GREETING$=GREETING$+"Bye bye!"+Chr$(10)
  476.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[GREETING$,20,22,1,1000]
  477.  End If 
  478. Until TASTO=-2
  479. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  480. Flash Off : Proc DISSOLVENZADEICOLORI[0,1,1]
  481. Proc T0GLIIMATTONCINI
  482. Proc T0GLIILPANNELLO
  483. Proc T0GLILARCOBALENO
  484. Show : Rainbow Del 0 : Screen Close 0 : Erase All : End 
  485. Procedure AGGIORNAILPANNELLO
  486.  ' Update the panel 
  487.  Proc MOSTRAILPUNTEGGIO[VERO]
  488.  Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
  489.  Proc MOSTRALEPALLINERIMASTE
  490.  Proc MOSTRAILLIVELLO
  491.  Proc MOSTRAILBONUS[VERO]
  492. End Proc
  493. Procedure AGGIUNGIALPUNTEGGIOILBONUS
  494.  ' Add the bonus to the score 
  495.  If BONUS>0
  496.   BONUS$="I am going to add the bonus points..."+Chr$(10)
  497.   BONUS$=BONUS$+"...to your game points."+Chr$(10)
  498.   BONUS$=BONUS$+"Wait for a moment, please..."
  499.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,0]
  500.   Repeat 
  501.    Dec BONUS : Proc MOSTRAILBONUS[FALSO]
  502.    Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  503.   Until BONUS=0
  504.  Else 
  505.   BONUS$="There are no bonus points..."+Chr$(10)
  506.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  507.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
  508.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  509.   _ASPETTA[1000]
  510.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,0]
  511.  End If 
  512. End Proc
  513. Procedure AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
  514.  ' Add 2 points to the score for every brick left 
  515.  If MATTONCINIRIMASTI>0
  516.   BONUS$="I am going to add the bricks left bonus points..."+Chr$(10)
  517.   BONUS$=BONUS$+"...to your game points,"+Chr$(10)
  518.   BONUS$=BONUS$+"adding two points for each brick left."+Chr$(10)
  519.   BONUS$=BONUS$+"There are"+Str$(MATTONCINIRIMASTI)+" bricks left..."+Chr$(10)
  520.   BONUS$=BONUS$+"...wait for a moment, please..."
  521.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,0]
  522.   Repeat 
  523.    Dec MATTONCINIRIMASTI
  524.    Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
  525.   Until MATTONCINIRIMASTI=0
  526.  Else 
  527.   BONUS$="There are no bricks left bonus points..."+Chr$(10)
  528.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  529.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
  530.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  531.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  532.   _ASPETTA[1000]
  533.  End If 
  534. End Proc
  535. Procedure AGGIUNGIALPUNTEGGIOILBONUSPERLEPALLINERIMASTEAFINEGIOCO
  536.  ' Add 500 points to the score for every ball left at the end of the game 
  537.  If PALLINE>0
  538.   BONUS$="I am going to add the ball left bonus points..."+Chr$(10)
  539.   BONUS$=BONUS$+"...to your game points,"+Chr$(10)
  540.   BONUS$=BONUS$+"adding 500 points for each ball left."+Chr$(10)
  541.   BONUS$=BONUS$+"There are"+Str$(PALLINE)+" ball(s) left..."+Chr$(10)
  542.   BONUS$=BONUS$+"...wait for a moment, please..."
  543.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,0]
  544.   Repeat 
  545.    Dec PALLINE : Proc MOSTRALEPALLINERIMASTE
  546.    Add PUNTEGGIO,500 : Proc MOSTRAILPUNTEGGIO[VERO]
  547.    Sam Play VOCE,2 : Proc VOCESEGUENTE
  548.    _ASPETTA[50]
  549.   Until PALLINE=0
  550.  Else 
  551.   BONUS$="There are no balls left bonus points..."+Chr$(10)
  552.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  553.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next game."+Chr$(10)
  554.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  555.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  556.   _ASPETTA[1000]
  557.  End If 
  558. End Proc
  559. Procedure _ASPETTA[TEMP0DAASPETTARE]
  560.  ' Wait for a (mouse or grey) key pressed 
  561.  TASTO=0
  562.  Timer=0
  563.  Repeat 
  564.   TASTOPREMUTO$=Inkey$
  565.   TASTOGRIGIO=Key Shift
  566.   TASTOPREMUTODELTOPO=Mouse Key
  567.   If TASTOGRIGIO>0 and TASTOGRIGIO<>Key Shift
  568.    Add TASTO,TASTOGRIGIO*256 : Exit 
  569.   End If 
  570.   If TASTOPREMUTODELTOPO>0 Then TASTO=-TASTOPREMUTODELTOPO : Exit 
  571.   If TASTOPREMUTO$<>"" Then TASTO=Asc(TASTOPREMUTO$) : Exit 
  572.   If TEMP0DAASPETTARE>0 Then TEMP0TRASCORSO=Timer
  573.  Until Timer>TEMP0DAASPETTARE
  574. End Proc
  575. Procedure BOINGINCAMPO
  576.  ' Manage the boings
  577.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  578.   If BOING(BOING)>0
  579.    If RITARDOBOING=0
  580.     Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOING(BOING(BOING)-1)
  581.     Add XBOING(BOING),Rnd(4)-2
  582.     Proc LIMITI[XBOING(BOING),0,XFINALERIGA] : XBOING(BOING)=Param
  583.     Inc YBOING(BOING)
  584.     Add BOING(BOING),1,1 To 8
  585.    End If 
  586.    Proc ILBOINGESTATOCOLPITO[BOING]
  587.    Proc ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  588.   Else If BOING(BOING)=0
  589.    XBOING(BOING)=Rnd(XFINALERIGA) : YBOING(BOING)=-9 : BOING(BOING)=Rnd(7)+1
  590.    If SUONICARICATI=VERO
  591.     Sam Play VOCE,10 : Proc VOCESEGUENTE
  592.    Else 
  593.     Bell 60
  594.    End If 
  595.   Else If BOING(BOING)<0
  596.    If BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  597.     Proc CANCELLAILBOING[BOING] : Inc BOING(BOING)
  598.    Else 
  599.     Inc BOING(BOING)
  600.    End If 
  601.   End If 
  602.  Next BOING
  603.  Add RITARDOBOING,1,0 To 3
  604. End Proc
  605. Procedure CAMBIALALUNGHEZZADELLABARRA
  606.  ' Change the bar size
  607.  If LUNGHEZZADELLABARRACAMBIATA<>LUNGHEZZADELLABARRA
  608.   If LUNGHEZZADELLABARRA=0
  609.    If LUNGHEZZADELLABARRACAMBIATA=1
  610.     Gosub LUNGHEZZADAZEROAUNO
  611.    End If 
  612.    If LUNGHEZZADELLABARRACAMBIATA=2
  613.     Gosub LUNGHEZZADAZEROAUNO
  614.     Gosub LUNGHEZZADAUNOADUE
  615.    End If 
  616.   Else If LUNGHEZZADELLABARRA=1
  617.    If LUNGHEZZADELLABARRACAMBIATA=0
  618.     Gosub LUNGHEZZADAUNOAZERO
  619.    End If 
  620.    If LUNGHEZZADELLABARRACAMBIATA=2
  621.     Gosub LUNGHEZZADAUNOADUE
  622.    End If 
  623.   Else If LUNGHEZZADELLABARRA=2
  624.    If LUNGHEZZADELLABARRACAMBIATA=0
  625.     Gosub LUNGHEZZADADUEAUNO
  626.     Gosub LUNGHEZZADAUNOAZERO
  627.    End If 
  628.    If LUNGHEZZADELLABARRACAMBIATA=1
  629.     Gosub LUNGHEZZADADUEAUNO
  630.    End If 
  631.   End If 
  632.  End If 
  633.  LUNGHEZZADELLABARRA=LUNGHEZZADELLABARRACAMBIATA
  634.  Pop Proc
  635.  LUNGHEZZADAZEROAUNO:
  636.  ' From small to medium bar 
  637.  For OGGETTO=45 To 41 Step -1
  638.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  639.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
  640.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  641.   Bob Update 
  642.  Next OGGETTO
  643.  Return 
  644.  LUNGHEZZADAUNOADUE:
  645.  ' From medium to large bar 
  646.  For OGGETTO=13 To 26
  647.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  648.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
  649.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  650.   Bob Update 
  651.  Next OGGETTO
  652.  Return 
  653.  LUNGHEZZADADUEAUNO:
  654.  ' From large to medium bar 
  655.  For OGGETTO=26 To 13 Step -1
  656.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  657.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
  658.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  659.   Bob Update 
  660.  Next OGGETTO
  661.  Return 
  662.  LUNGHEZZADAUNOAZERO:
  663.  ' From medium to small bar 
  664.  For OGGETTO=41 To 45
  665.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  666.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
  667.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  668.   Bob Update 
  669.  Next OGGETTO
  670.  Return 
  671. End Proc
  672. Procedure CANCELLAIBOING
  673.  ' Turn off all the boings
  674.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  675.   Bob Off OGGETTOBOING+BOING
  676.  Next BOING
  677.  Bob Update 
  678. End Proc
  679. Procedure CANCELLAILBOING[BOING]
  680.  ' Turn off the specified boing 
  681.  Bob Off OGGETTOBOING+BOING
  682.  Bob Update 
  683. End Proc
  684. Procedure CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  685.  ' Turn off the specified bonus brick 
  686.  Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  687.  Bob Update 
  688.  MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
  689. End Proc
  690. Procedure CANCELLAILPAPERO
  691.  ' Turn off the duck
  692.  Bob Off OGGETTOPAPERO
  693.  Bob Update 
  694. End Proc
  695. Procedure CANCELLAILRAGGIOLASER
  696.  ' Turn off the laser ray 
  697.  Bob Off OGGETTORAGGIOLASER
  698.  Bob Update 
  699.  RAGGIOLASERRIFLESSO=FALSO
  700.  RAGGIOLASERSPARATO=FALSO
  701. End Proc
  702. Procedure CANCELLAILRUBAPALLINA
  703.  ' Turn off the ballthief 
  704.  Bob Off OGGETTORUBAPALLINA
  705.  Bob Update 
  706.  Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  707.  PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  708. End Proc
  709. Procedure CANCELLAIMATTONCINI
  710.  ' Clear the bricks area  
  711.  Cls 0,0,0 To XPANNELLO,Screen Height
  712. End Proc
  713. Procedure CANCELLAIMATTONCINIDIPOTENZIAMENTO
  714.  ' Turn off all the bonus bricks
  715.  For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  716.   If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>0
  717.    Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  718.   End If 
  719.   MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
  720.  Next MATTONCINODIPOTENZIAMENTO
  721.  Bob Update 
  722. End Proc
  723. Procedure CANCELLALABARRA
  724.  ' Turn off the bar 
  725.  Bob Off OGGETTOCENTRODELLABARRA
  726.  Bob Off OGGETTOLATIDELLABARRA
  727.  Bob Update 
  728. End Proc
  729. Procedure CANCELLALAPALLINA[PALLINA]
  730.  ' Turn off the specified ball  
  731.  Bob Off OGGETTOPALLINA+PALLINA
  732.  Bob Update 
  733. End Proc
  734. Procedure CANCELLALARIGA
  735.  ' Turn off the row 
  736.  If RIGA>0
  737.   T0GLILARIGA=RIGA : RIGA=0
  738.   For XRIGA=XRIGA To 0 Step -1
  739.    Proc MOSTRALARIGA[T0GLILARIGA] : Wait Vbl 
  740.   Next XRIGA
  741.  End If 
  742. End Proc
  743. Procedure CANCELLALEPALLINE
  744.  ' Turn off all the balls 
  745.  For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  746.   Bob Off OGGETTOPALLINA+PALLINA
  747.  Next PALLINA
  748.  Bob Update 
  749. End Proc
  750. Procedure CARICAGLIOGGETTI
  751.  ' Load the objects 
  752.  Load PERCORSODELLAGRAFICA$+OGGETTI$
  753. End Proc
  754. Procedure CARICAILLIVELLO
  755.  ' Load the level 
  756.  LIVELLO$="Livello"+Str$(LIVELLO)-" "
  757.  FILE$=PERCORSODEILIVELLI$+LIVELLO$
  758.  If Exist(FILE$)
  759.   Open In 1,FILE$
  760.   MARCATORE$=Input$(1,9)
  761.   LUNGHEZZABANCO=Lof(1)
  762.   Close 1
  763.   If MARCATORE$="Mattonite"
  764.    Reserve As Work BANCO,LUNGHEZZABANCO
  765.    Bload FILE$,Start(BANCO)
  766.   End If 
  767.  Else 
  768.   LIVELLO=-1
  769.  End If 
  770. End Proc
  771. Procedure CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  772.  ' Load the top hundred scores
  773.  If Exist(PUNTEGGI$)
  774.   CENTOGIOCATORI$=""
  775.   Open In 1,PUNTEGGI$
  776.   For POSIZIONE=0 To 99
  777.    Exit If Eof(1)
  778.    Input #1,GIOCATORE$(POSIZIONE)
  779.    CENTOGIOCATORI$=CENTOGIOCATORI$+"<"+Str$(POSIZIONE+1)-" "+"> "
  780.    CENTOGIOCATORI$=CENTOGIOCATORI$+GIOCATORE$(POSIZIONE)+Chr$(10)
  781.    Input #1,PUNTEGGIO$(POSIZIONE)
  782.    CENTOGIOCATORI$=CENTOGIOCATORI$+"points> "
  783.    CENTOGIOCATORI$=CENTOGIOCATORI$+PUNTEGGIO$(POSIZIONE)
  784.    If Not Eof(1)
  785.     CENTOGIOCATORI$=CENTOGIOCATORI$+Chr$(10)
  786.    End If 
  787.   Next POSIZIONE
  788.   Close 1
  789.   PUNTEGGIOMASSIMO=Val(PUNTEGGIO$(0))
  790.   Inc POSIZIONE
  791.  End If 
  792. End Proc
  793. Procedure CARICAISUONI
  794.  ' Load the sounds
  795.  Load PERCORSODELLAMUSICA$+SUONI$
  796. End Proc
  797. Procedure CREALEIMMAGINIPERLERIGHE
  798.  ' Create the row images
  799.  XFINALERIGA=XPANNELLO-1
  800.  IMMAGINERIGAUNO=IMMAGINEPALLINA+1
  801.  Ink 20 : Bar 0,251 To XFINALERIGA,255
  802.  Get Bob IMMAGINERIGAUNO,0,251 To XFINALERIGA+1,255+1
  803.  Hot Spot IMMAGINERIGAUNO,XFINALERIGA,0
  804.  IMMAGINERIGADUE=IMMAGINERIGAUNO+1
  805.  Ink 21 : Bar 0,251 To XFINALERIGA,255
  806.  Get Bob IMMAGINERIGADUE,0,251 To XFINALERIGA+1,255+1
  807.  Hot Spot IMMAGINERIGADUE,XFINALERIGA,0
  808.  IMMAGINERIGATRE=IMMAGINERIGADUE+1
  809.  Ink 22 : Bar 0,251 To XFINALERIGA,255
  810.  Get Bob IMMAGINERIGATRE,0,251 To XFINALERIGA+1,255+1
  811.  Hot Spot IMMAGINERIGATRE,XFINALERIGA,0
  812.  Ink 0 : Bar 0,251 To XFINALERIGA,255
  813. End Proc
  814. Procedure CREATESTOBORDATO[XTESTO,YTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  815.  ' Create outlined text 
  816.  Ink C0LOREBORDO
  817.  Text XTESTO,YTESTO-1,TESTO$
  818.  Text XTESTO+1,YTESTO-1,TESTO$
  819.  Text XTESTO+1,YTESTO,TESTO$
  820.  Text XTESTO+1,YTESTO+1,TESTO$
  821.  Text XTESTO,YTESTO+1,TESTO$
  822.  Text XTESTO-1,YTESTO+1,TESTO$
  823.  Text XTESTO-1,YTESTO,TESTO$
  824.  Text XTESTO-1,YTESTO-1,TESTO$
  825.  Ink C0LORETESTO
  826.  Text XTESTO,YTESTO,TESTO$
  827. End Proc
  828. Procedure DABANCOAVARIABILI
  829.  ' Copy from bank to variables
  830.  If Length(BANCO)>0
  831.   INDIRIZZO=Start(BANCO)+9
  832.   For A=0 To 246
  833.    MATTONCINO(A)=Peek(INDIRIZZO)
  834.    Inc INDIRIZZO
  835.   Next A
  836.   For A=0 To 255
  837.    ARCOBALENO=Peek(INDIRIZZO)
  838.    Inc INDIRIZZO
  839.    ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100
  840.    Rain(0,A)=ARCOBALENO : Rainbow 0,257,0,271
  841.    Wait Vbl 
  842.    Inc INDIRIZZO
  843.   Next A
  844.   BONUS=Peek(INDIRIZZO)
  845.   Inc INDIRIZZO
  846.   Add BONUS,Peek(INDIRIZZO)*100
  847.   Inc INDIRIZZO
  848.   Add BONUS,Peek(INDIRIZZO)*10000
  849.   Inc INDIRIZZO
  850.   Add BONUS,Peek(INDIRIZZO)*1000000
  851.   Inc INDIRIZZO
  852.  End If 
  853.  Erase BANCO
  854. End Proc
  855. Procedure DISSOLVENZADEICOLORI[C0LORE,VELOCITA,M0DO]
  856.  ' Fade the colours 
  857.  If M0DO=0
  858.   For C=0 To C0LORIDELLOSCHERMOMENOUNO
  859.    Colour C,C0LORE
  860.    If VELOCITA>0
  861.     Wait VELOCITA
  862.    End If 
  863.   Next C
  864.  Else 
  865.   Dim ROSSO(C0LORIDELLOSCHERMOMENOUNO),VERDE(C0LORIDELLOSCHERMOMENOUNO),BLU(C0LORIDELLOSCHERMOMENOUNO)
  866.   Dim ROSSOFINALE(C0LORIDELLOSCHERMOMENOUNO),VERDEFINALE(C0LORIDELLOSCHERMOMENOUNO),BLUFINALE(C0LORIDELLOSCHERMOMENOUNO)
  867.   Dim ROSSODISSOLTO(C0LORIDELLOSCHERMOMENOUNO),VERDEDISSOLTO(C0LORIDELLOSCHERMOMENOUNO),BLUDISSOLTO(C0LORIDELLOSCHERMOMENOUNO)
  868.   For C=0 To C0LORIDELLOSCHERMOMENOUNO
  869.    If M0DO=1
  870.     ROSSOFINALE(C)=C0LORE/256
  871.     VERDEFINALE(C)=C0LORE/16 mod 16
  872.     BLUFINALE(C)=C0LORE mod 16
  873.    Else If M0DO=2
  874.     ROSSOFINALE(C)=C0LORE(C)/256
  875.     VERDEFINALE(C)=C0LORE(C)/16 mod 16
  876.     BLUFINALE(C)=C0LORE(C) mod 16
  877.    End If 
  878.    ROSSO(C)=Colour(C)/256
  879.    VERDE(C)=Colour(C)/16 mod 16
  880.    BLU(C)=Colour(C) mod 16
  881.   Next C
  882.   Repeat 
  883.    For C=0 To C0LORIDELLOSCHERMOMENOUNO
  884.     If ROSSODISSOLTO(C)=FALSO
  885.      If ROSSO(C)<ROSSOFINALE(C)
  886.       Inc ROSSO(C)
  887.      Else If ROSSO(C)=ROSSOFINALE(C)
  888.       ROSSODISSOLTO(C)=VERO
  889.      Else If ROSSO(C)>ROSSOFINALE(C)
  890.       Dec ROSSO(C)
  891.      End If 
  892.     End If 
  893.     If VERDEDISSOLTO(C)=FALSO
  894.      If VERDE(C)<VERDEFINALE(C)
  895.       Inc VERDE(C)
  896.      Else If VERDE(C)=VERDEFINALE(C)
  897.       VERDEDISSOLTO(C)=VERO
  898.      Else If VERDE(C)>VERDEFINALE(C)
  899.       Dec VERDE(C)
  900.      End If 
  901.     End If 
  902.     If BLUDISSOLTO(C)=FALSO
  903.      If BLU(C)<BLUFINALE(C)
  904.       Inc BLU(C)
  905.      Else If BLU(C)=BLUFINALE(C)
  906.       BLUDISSOLTO(C)=VERO
  907.      Else If BLU(C)>BLUFINALE(C)
  908.       Dec BLU(C)
  909.      End If 
  910.     End If 
  911.     Colour C,ROSSO(C)*256+VERDE(C)*16+BLU(C)
  912.     If C=0
  913.      C0LORIDISSOLTI=0
  914.     End If 
  915.     If ROSSODISSOLTO(C)=VERO
  916.      If VERDEDISSOLTO(C)=VERO
  917.       If BLUDISSOLTO(C)=VERO
  918.        Inc C0LORIDISSOLTI
  919.       End If 
  920.      End If 
  921.     End If 
  922.    Next C
  923.    If VELOCITA>0
  924.     Wait VELOCITA
  925.    End If 
  926.   Until C0LORIDISSOLTI=C0LORIDELLOSCHERMOMENOUNO+1
  927.  End If 
  928. End Proc
  929. Procedure FAIINSERIREALGIOCATOREILSUOPUNTEGGIO
  930.  ' Let the player type his/her name 
  931.  For POSIZIONI=98 To 0 Step -1
  932.   If POSIZIONE<POSIZIONI
  933.    GIOCATORE$(POSIZIONI+1)=GIOCATORE$(POSIZIONI)
  934.    PUNTEGGIO$(POSIZIONI+1)=GIOCATORE$(POSIZIONI)
  935.   Else If POSIZIONE=POSIZIONI
  936.    GIOCATORE$="Anonymous"
  937.    Repeat 
  938.     MESSAGGIO$=""
  939.     MESSAGGIO$=MESSAGGIO$+"You have entered the Top Hundred Scores..."+Chr$(10)
  940.     MESSAGGIO$=MESSAGGIO$+"...at position"+Str$(POSIZIONE)+"."+Chr$(10)
  941.     MESSAGGIO$=MESSAGGIO$+"Please backspace the Anonymous player..."+Chr$(10)
  942.     MESSAGGIO$=MESSAGGIO$+"...and type your name; press Return when done."+Chr$(10)
  943.     MESSAGGIO$=MESSAGGIO$+GIOCATORE$+Chr$(10)
  944.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[MESSAGGIO$,22,20,1,9000]
  945.     If TASTO=0
  946.      GIOCATORE$="Anonymous" : TASTO=13
  947.     End If 
  948.     If TASTO>255
  949.      TASTO=TASTO mod 256
  950.     End If 
  951.     If TASTO=8
  952.      GIOCATORE$=Left$(GIOCATORE$,Len(GIOCATORE$)-1)
  953.     Else If TASTO=27
  954.      GIOCATORE$="Anonymous" : TASTO=13
  955.     Else If TASTO>31
  956.      GIOCATORE$=GIOCATORE$+Chr$(TASTO)
  957.     End If 
  958.    Until TASTO=13
  959.    GIOCATORE$(POSIZIONE)=GIOCATORE$
  960.    PUNTEGGIO$(POSIZIONE)=Str$(PUNTEGGIO)-" "
  961.   End If 
  962.  Next POSIZIONI
  963. End Proc
  964. Procedure HAISPARATOILRAGGIOLASER
  965.  ' Fire the laser ray 
  966.  If LASER>0 and RAGGIOLASERSPARATO=FALSO
  967.   XLASER=XBARRA : YLASER=YBARRA+4 : IMMAGINERAGGIOLASER=9+LASER
  968.   RAGGIOLASERSPARATO=VERO
  969.   If SUONICARICATI=VERO
  970.    Sam Play VOCE,4,8363/SEMITONO#^LASER : Proc VOCESEGUENTE
  971.   Else 
  972.    Shoot 
  973.   End If 
  974.  End If 
  975. End Proc
  976. Procedure ILBOINGESTATOCOLPITO[BOING]
  977.  ' Check if the specified boing has been hitted 
  978.  If Bob Col(OGGETTOBOING+BOING,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  979.   PALLINA=Col(-1)-OGGETTOPALLINA
  980.   XDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(XBOING(BOING)-Int(XPALLINA#(PALLINA)))
  981.   If XDISTANZADELLAPALLINADALBOINGCOLPITO>9
  982.    DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  983.   End If 
  984.   YDISTANZADELLAPALLINADALBOINGCOLPITO=Abs(YBOING(BOING)-Int(YPALLINA#(PALLINA)))
  985.   If YDISTANZADELLAPALLINADALBOINGCOLPITO>9
  986.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  987.   End If 
  988.   Add PUNTEGGIO,3 : Proc MOSTRAILPUNTEGGIO[VERO]
  989.   BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  990.   If SUONICARICATI=VERO
  991.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  992.   Else 
  993.    Bell 3
  994.   End If 
  995.  Else If Bob Col(OGGETTOBOING+BOING,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  996.   Proc CANCELLAILRAGGIOLASER
  997.   Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[VERO]
  998.   BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  999.   If SUONICARICATI=VERO
  1000.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1001.   Else 
  1002.    Bell 2
  1003.   End If 
  1004.  Else If Bob Col(OGGETTOBOING+BOING,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1005.   Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1006.   BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1007.   If SUONICARICATI=VERO
  1008.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  1009.   Else 
  1010.    Bell 1
  1011.   End If 
  1012.  End If 
  1013. End Proc
  1014. Procedure ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  1015.  ' Check if the specified boing has gone out of the game field
  1016.  If YBOING(BOING)>255+9 Then BOING(BOING)=RITARDODELLENTRATAINCAMPODEIBOING
  1017. End Proc
  1018. Procedure ILRUBAPALLINAESTATOCOLPITO
  1019.  ' Check if the ballthief has been hitted 
  1020.  If RUBAPALLINACOLPITO=FALSO
  1021.   For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1022.    If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
  1023.     If PALLINA<>PALLINAPRESADALRUBAPALLINA
  1024.      If Bob Col(OGGETTORUBAPALLINA,OGGETTOPALLINA+PALLINA To OGGETTOPALLINA+PALLINA)=VERO
  1025.       XPALLINA=Int(XPALLINA#(PALLINA))
  1026.       XDISTANZADELLAPALLINADALRUBAPALLINA=Abs(XRUBAPALLINA-XPALLINA)
  1027.       If XDISTANZADELLAPALLINADALRUBAPALLINA>12
  1028.        DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1029.       End If 
  1030.       YPALLINA=Int(YPALLINA#(PALLINA))
  1031.       YDISTANZADELLAPALLINADALBOINGCOLPITO=YRUBAPALLINA-YPALLINA
  1032.       If YDISTANZADELLAPALLINADALRUBAPALLINA>0 and YDISTANZADELLAPALLINADALRUBAPALLINA<11
  1033.        DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1034.       End If 
  1035.       Add PUNTEGGIO,50 : Proc MOSTRAILPUNTEGGIO[VERO]
  1036.       If SUONICARICATI=VERO
  1037.        Sam Play VOCE,9 : Proc VOCESEGUENTE
  1038.       Else 
  1039.        Boom 
  1040.       End If 
  1041.       RUBAPALLINACOLPITO=VERO
  1042.      End If 
  1043.     End If 
  1044.    End If 
  1045.   Next PALLINA
  1046.   If Bob Col(OGGETTORUBAPALLINA,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  1047.    Proc CANCELLAILRAGGIOLASER
  1048.    Add PUNTEGGIO,100 : Proc MOSTRAILPUNTEGGIO[VERO]
  1049.    If SUONICARICATI=VERO
  1050.     Sam Play VOCE,9 : Proc VOCESEGUENTE
  1051.    Else 
  1052.     Boom 
  1053.    End If 
  1054.    RUBAPALLINACOLPITO=VERO
  1055.   Else If Bob Col(OGGETTORUBAPALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1056.    Add PUNTEGGIO,200 : Proc MOSTRAILPUNTEGGIO[VERO]
  1057.    If SUONICARICATI=VERO
  1058.     Sam Play VOCE,9 : Proc VOCESEGUENTE
  1059.    Else 
  1060.     Boom 
  1061.    End If 
  1062.    RUBAPALLINACOLPITO=VERO
  1063.   End If 
  1064.  Else 
  1065.   Inc IMMAGINERUBAPALLINA
  1066.   If IMMAGINERUBAPALLINA=10
  1067.    Proc CANCELLAILRUBAPALLINA
  1068.    Proc IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  1069.    If PALLINAPRESADALRUBAPALLINA<MASSIMOPALLINEINCAMPO
  1070.     PALLINA(PALLINAPRESADALRUBAPALLINA)=VERO
  1071.    End If 
  1072.    PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  1073.    IMMAGINERUBAPALLINA=0
  1074.    RUBAPALLINACOLPITO=FALSO
  1075.   End If 
  1076.  End If 
  1077. End Proc
  1078. Procedure ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
  1079.  ' Check if the ballthief has gone out of the game field
  1080.  If YRUBAPALLINA<-4
  1081.   Proc CANCELLAILRUBAPALLINA
  1082.   PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  1083.   Dec PALLINEINCAMPO
  1084.  End If 
  1085. End Proc
  1086. Procedure IMPOSTAGLIOGGETTI
  1087.  ' Set the object images
  1088.  IMMAGINEPALLINA=Length(1)
  1089.  IMMAGINELASER=6
  1090.  MATTONCINIDIPOTENZIAMENTO=Length(1)-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIPAPERO-116
  1091.  For IMMAGINE=0 To IMMAGINIRUBAPALLINA-1
  1092.   IMMAGINERUBAPALLINA(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA+IMMAGINE
  1093.  Next IMMAGINE
  1094.  For IMMAGINE=0 To IMMAGINIPAPERO-1
  1095.   IMMAGINEPAPERO(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIPAPERO+IMMAGINE
  1096.  Next IMMAGINE
  1097.  For IMMAGINE=0 To IMMAGINIBOING-1
  1098.   IMMAGINEBOING(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING+IMMAGINE
  1099.  Next IMMAGINE
  1100. End Proc
  1101. Procedure IMPOSTAIBOING
  1102.  ' Set the boings to their initial status   
  1103.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  1104.   BOING(BOING)=0
  1105.  Next BOING
  1106. End Proc
  1107. Procedure IMPOSTAICOLORI
  1108.  ' Remember the screen palette
  1109.  Get Bob Palette 
  1110.  C0LORIDELLOSCHERMOMENOUNO=Screen Colour-1
  1111.  If C0LORIDELLOSCHERMOMENOUNO=63 Then C0LORIDELLOSCHERMOMENOUNO=31
  1112.  For C=0 To C0LORIDELLOSCHERMOMENOUNO
  1113.   C0LORE(C)=Colour(C)
  1114.  Next C
  1115. End Proc
  1116. Procedure IMPOSTAILAMPEGGI
  1117.  ' Set the colour flashes 
  1118.  Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)"
  1119.  Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)"
  1120.  Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)"
  1121. End Proc
  1122. Procedure IMPOSTAILRIMBALZODELLEPALLINE
  1123.  ' Set the bouncign of the balls to their initial state 
  1124.  For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1125.   LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
  1126.  Next PALLINA
  1127. End Proc
  1128. Procedure IMPOSTAILRITARDODELLENTRATAINCAMPODELRUBAPALLINA
  1129.  RITARDODELLENTRATAINCAMPODELRUBAPALLINA=55950-LIVELLO*50
  1130. End Proc
  1131. Procedure IMPOSTAIPERCORSIDEIFILE
  1132.  ' Look for the file paths
  1133.  PERCORSODELLAGRAFICA$=PERCORSO$+"Grafica/"
  1134.  PERCORSODEILIVELLI$=PERCORSO$+"Livelli/"
  1135.  PERCORSODELLAMUSICA$=PERCORSO$+"Musica/"
  1136. End Proc
  1137. Procedure IMPOSTALADURATADELLERIGHE
  1138.  ' Set the time duration of the rows in 50th of a second  
  1139.  DURATADELLARIGA(0)=3000
  1140.  DURATADELLARIGA(1)=9000
  1141.  DURATADELLARIGA(2)=27000
  1142. End Proc
  1143. Procedure IMPOSTALARCOBALENO
  1144.  ' Set the rainbow
  1145.  Set Rainbow 0,0,271,"","",""
  1146.  For LINEADELLARCOBALENO=0 To 255
  1147.   Rain(0,LINEADELLARCOBALENO)=$FFF
  1148.  Next LINEADELLARCOBALENO
  1149.  Rainbow 0,257,0,271
  1150. End Proc
  1151. Procedure IMPOSTALEVOCI
  1152.  'Set the audio voices
  1153.  For VOCE=0 To 3
  1154.   VOCE(VOCE)=2^VOCE
  1155.  Next VOCE
  1156. End Proc
  1157. Procedure IMPOSTALEZONEDEIMATTONCINI
  1158.  ' Set the brick detection zones
  1159.  Reserve Zone 264
  1160.  For MATTONCINO=0 To 246
  1161.   LINEADELMATTONCINO=MATTONCINO/13 : RIGADELMATTONCINO=MATTONCINO mod 13
  1162.   X0ZONA(MATTONCINO)=RIGADELMATTONCINO*21
  1163.   Y0ZONA(MATTONCINO)=LINEADELMATTONCINO*11
  1164.   X0MATTONCINO=X0ZONA(MATTONCINO)
  1165.   Y0MATTONCINO=Y0ZONA(MATTONCINO)
  1166.   If RIGADELMATTONCINO=12
  1167.    X1MATTONCINO=X0MATTONCINO+19
  1168.    Y1MATTONCINO=Y0MATTONCINO+9
  1169.   Else 
  1170.    X1MATTONCINO=X0MATTONCINO+20
  1171.    Y1MATTONCINO=Y0MATTONCINO+10
  1172.   End If 
  1173.   Set Zone MATTONCINO+1,X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
  1174.  Next MATTONCINO
  1175. End Proc
  1176. Procedure IMPOSTALINGOMBRODELLABARRA
  1177.  ' Set the length of the bars from the center to an edge
  1178.  INGOMBRODELLABARRA(0)=10
  1179.  INGOMBRODELLABARRA(1)=16
  1180.  INGOMBRODELLABARRA(2)=31
  1181. End Proc
  1182. Procedure IMPOSTALOSCHERMO
  1183.  ' Set the screen 
  1184.  Screen Open 0,320,256,64,Lowres : Curs Off : Flash Off : Pen 1 : Paper 0
  1185.  Cls : Bob Update Off : Gr Writing 0 : Wait Vbl : Limit Mouse 
  1186. End Proc
  1187. Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA
  1188.  ' Look for the position of the program 
  1189.  PERCORSO$=Dir$
  1190. End Proc
  1191. Procedure LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
  1192.  ' Check if the specified ball has gone out of the game field 
  1193.  If YPALLINA#(PALLINA)>255+3
  1194.   Proc CANCELLALAPALLINA[PALLINA]
  1195.   PALLINA(PALLINA)=FALSO
  1196.   Dec PALLINEINCAMPO
  1197.  End If 
  1198. End Proc
  1199. Procedure LAPALLINAHACOLPITOLABARRA[PALLINA]
  1200.  ' Check if the specified ball has met the bar
  1201.  If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1202.   If LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
  1203.    If C0LLA=VERO
  1204.     XCOLLA(PALLINA)=XBARRA-Int(XPALLINA#(PALLINA))
  1205.     YCOLLA(PALLINA)=YBARRA-Int(YPALLINA#(PALLINA))
  1206.     LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
  1207.    End If 
  1208.    If Col(OGGETTOCENTRODELLABARRA)=VERO
  1209.     If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  1210.      DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)/2.0
  1211.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)*2
  1212.      LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=FALSO
  1213.     Else 
  1214.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1215.     End If 
  1216.     If SUONICARICATI=VERO
  1217.      Sam Play VOCE,2 : Proc VOCESEGUENTE
  1218.     Else 
  1219.      Boom 
  1220.     End If 
  1221.    Else If Col(OGGETTOLATIDELLABARRA)=VERO
  1222.     If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  1223.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1224.     Else 
  1225.      DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)*2
  1226.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)/2.0
  1227.      LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)=VERO
  1228.     End If 
  1229.     If SUONICARICATI=VERO
  1230.      Sam Play VOCE,2,8363/2 : Proc VOCESEGUENTE
  1231.     Else 
  1232.      Boom 
  1233.     End If 
  1234.    End If 
  1235.    LAPALLINAHACOLPITOLABARRA(PALLINA)=VERO
  1236.   End If 
  1237.  Else 
  1238.   LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
  1239.  End If 
  1240. End Proc
  1241. Procedure LAPALLINAHACOLPITOLARIGA[PALLINA]
  1242.  ' Check if the specified ball has hitted the row 
  1243.  If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTORIGA To OGGETTORIGA)=VERO
  1244.   If DELTAYPALLINA#(PALLINA)>0
  1245.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1246.   End If 
  1247.   If SUONICARICATI=VERO
  1248.    Sam Play VOCE,7 : Proc VOCESEGUENTE
  1249.   Else 
  1250.    Bell 96
  1251.   End If 
  1252.  End If 
  1253. End Proc
  1254. Procedure LIMITAIMOVIMENTIDELLABARRA
  1255.  ' Lock bar movements 
  1256.  X0LIMITETOPO=X Hard(INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
  1257.  Y0LIMITETOPO=Y Hard(0)
  1258.  X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
  1259.  Y1LIMITETOPO=Y Hard(Screen Height-1)
  1260.  Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
  1261. End Proc
  1262. Procedure LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  1263.  ' Lock bar movements while it is changing
  1264.  If OGGETTO>39 and OGGETTO<46
  1265.   INGOMBRODELLABARRA=46-OGGETTO+10
  1266.  Else If OGGETTO>12 and OGGETTO<27
  1267.   INGOMBRODELLABARRA=OGGETTO+4
  1268.  End If 
  1269.  X0LIMITETOPO=X Hard(INGOMBRODELLABARRA)
  1270.  Y0LIMITETOPO=Y Hard(0)
  1271.  X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA)
  1272.  Y1LIMITETOPO=Y Hard(Screen Height-1)
  1273.  Wait Vbl 
  1274.  Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
  1275. End Proc
  1276. Procedure LIMITI[NUMERO,LIMITEMINIMO,LIMITEMASSIMO]
  1277.  '-> Limiti by Stefano Regattin 
  1278.  'i> 19 maggio 1996 
  1279.  'm> 12 giugno 1996 
  1280.  '--------------------------------------------------------
  1281.  'La procedura equivale alle seguenti linee di programma: 
  1282.  ' If NUMERO<LIMITEMINIMO Then NUMERO=LIMITEMINIMO
  1283.  ' If NUMERO>LIMITEMASSIMO Then NUMERO=LIMITEMASSIMO
  1284.  'Se LIMITEMINIMO ï¿½ maggiore di LIMITEMASSIMO ne scambia i valori 
  1285.  '----------------------------------------------------------------  
  1286.  If LIMITEMINIMO>LIMITEMASSIMO Then Swap LIMITEMINIMO,LIMITEMASSIMO
  1287.  NUMERO=Max(Min(NUMERO,LIMITEMASSIMO),LIMITEMINIMO)
  1288. End Proc[NUMERO]
  1289. Procedure MATTONCINIDIPOTENZIAMENTO[MATTONCINO,ESCESEUGUALEAZERO]
  1290.  ' Manage the bonus bricks
  1291.  If ESCESEUGUALEAZERO>0 Then Pop Proc
  1292.  If MATTONCINO=0
  1293.   For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  1294.    TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1295.    If TIPODIMATTONCINODIPOTENZIAMENTO>0
  1296.     Bob OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),115+TIPODIMATTONCINODIPOTENZIAMENTO
  1297.     Proc MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
  1298.     Inc YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1299.     Proc MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
  1300.    End If 
  1301.   Next MATTONCINODIPOTENZIAMENTO
  1302.  Else 
  1303.   For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  1304.    TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1305.    If TIPODIMATTONCINODIPOTENZIAMENTO=0
  1306.     If MATTONCINO>0
  1307.      MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Rnd(19)+1
  1308.      XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=X0ZONA(MATTONCINO-1)
  1309.      YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Y0ZONA(MATTONCINO-1)
  1310.     Else If MATTONCINO<0
  1311.      MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-MATTONCINO
  1312.      XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=XBARRA-9
  1313.      YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-9
  1314.     End If 
  1315.     Exit 
  1316.    End If 
  1317.   Next MATTONCINODIPOTENZIAMENTO
  1318.  End If 
  1319. End Proc
  1320. Procedure MATTONCINOCOLPITODALLAPALLINA[PALLINA]
  1321.  ' Check if a brick has been hitted by the specified ball 
  1322.  XPALLINA=Int(XPALLINA#(PALLINA)) : YPALLINA=Int(YPALLINA#(PALLINA))
  1323.  MATTONCINO=Zone(XPALLINA,YPALLINA)
  1324.  If MATTONCINO>0
  1325.   MATTONELLA=MATTONCINO(MATTONCINO-1)
  1326.   If MATTONELLA>0
  1327.    If MATTONELLA<10
  1328.     MATTONCINOELIMINATODALLAPALLINA=VERO
  1329.    Else If MATTONELLA>9 and MATTONELLA<28
  1330.     Add MATTONELLA,-9
  1331.     MATTONCINO(MATTONCINO-1)=MATTONELLA
  1332.     Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1333.    Else 
  1334.     MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1335.    End If 
  1336.    Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
  1337.    Y1MATTONCINO=Y0MATTONCINO+9
  1338.    If RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  1339.     If YPALLINA<Y1MATTONCINO and YPALLINA>Y0MATTONCINO
  1340.      DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1341.     Else 
  1342.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1343.     End If 
  1344.     If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1345.      If SUONICARICATI=VERO
  1346.       Sam Play VOCE,3,8363*SEMITONO#^4 : Proc VOCESEGUENTE
  1347.      Else 
  1348.       Bell 40
  1349.      End If 
  1350.     Else 
  1351.      If SUONICARICATI=VERO
  1352.       Sam Play VOCE,3 : Proc VOCESEGUENTE
  1353.      Else 
  1354.       Bell 30
  1355.      End If 
  1356.     End If 
  1357.    Else 
  1358.     If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1359.      If SUONICARICATI=VERO
  1360.       Sam Play VOCE,6,8363*SEMITONO#^4 : Proc VOCESEGUENTE
  1361.      Else 
  1362.       Bell 60
  1363.      End If 
  1364.     Else 
  1365.      If SUONICARICATI=VERO
  1366.       Sam Play VOCE,6 : Proc VOCESEGUENTE
  1367.      Else 
  1368.       Bell 50
  1369.      End If 
  1370.     End If 
  1371.    End If 
  1372.    If MATTONCINOELIMINATODALLAPALLINA=VERO
  1373.     Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1374.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(19)]
  1375.     Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1376.     MATTONCINO(MATTONCINO-1)=0
  1377.    End If 
  1378.   End If 
  1379.  End If 
  1380. End Proc
  1381. Procedure MATTONCINOCOLPITODALRAGGIOLASER
  1382.  ' Check if a brick has been hitted by the laser ray
  1383.  If RAGGIOLASERSPARATO=VERO
  1384.   MATTONCINO=Zone(XLASER,YLASER)
  1385.   If MATTONCINO>0
  1386.    MATTONELLA=MATTONCINO(MATTONCINO-1)
  1387.    If MATTONELLA>0
  1388.     If MATTONELLA<10
  1389.      MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1390.     Else If MATTONELLA>9 and MATTONELLA<28
  1391.      Proc CANCELLAILRAGGIOLASER
  1392.      Add MATTONELLA,-9
  1393.      MATTONCINO(MATTONCINO-1)=MATTONELLA
  1394.      Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1395.     Else 
  1396.      MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1397.      If MATTONELLA=28
  1398.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1399.      Else If MATTONELLA=29 and LASER>1
  1400.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1401.      Else If MATTONELLA=30 and LASER=3
  1402.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1403.      Else If MATTONELLA=31
  1404.       RAGGIOLASERRIFLESSO=VERO
  1405.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1406.      Else If MATTONELLA=32 and LASER>1
  1407.       RAGGIOLASERRIFLESSO=VERO
  1408.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1409.      Else If MATTONELLA=33 and LASER=3
  1410.       RAGGIOLASERRIFLESSO=VERO
  1411.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1412.      End If 
  1413.     End If 
  1414.     If MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1415.      Proc CANCELLAILRAGGIOLASER
  1416.      Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1417.      Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1418.      Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(9)]
  1419.      MATTONCINO(MATTONCINO-1)=0
  1420.     End If 
  1421.    End If 
  1422.   End If 
  1423.  End If 
  1424. End Proc
  1425. Procedure MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
  1426.  ' Check if the bar has met the specified bonus brick 
  1427.  If Bob Col(OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1428.   If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO
  1429.    MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1430.    Add PUNTEGGIO,20
  1431.   Else 
  1432.    Add PUNTEGGIO,10
  1433.   End If 
  1434.   Proc MOSTRAILPUNTEGGIO[VERO]
  1435.   Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  1436.   Repeat 
  1437.    If TIPODIMATTONCINODIPOTENZIAMENTO=1 : Rem add a ball in the game field 
  1438.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1439.      If PALLINA(PALLINA)=FALSO
  1440.       PALLINA(PALLINA)=VERO
  1441.       XPALLINA#(PALLINA)=XBARRA
  1442.       YPALLINA#(PALLINA)=YBARRA-3
  1443.       VELOCITADELLAPALLINA#(PALLINA)=1
  1444.       D1REZIONEXPALLINA=Rnd(1)
  1445.       If D1REZIONEXPALLINA=1
  1446.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
  1447.       Else 
  1448.        DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  1449.       End If 
  1450.       DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  1451.       Inc PALLINEINCAMPO
  1452.       Exit 
  1453.      End If 
  1454.     Next 
  1455.     If SUONICARICATI=VERO
  1456.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1457.     Else 
  1458.      Bell 30
  1459.     End If 
  1460.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1461.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=2 : Rem b(all)+  
  1462.     If PALLINE<1000
  1463.      Inc PALLINE : Proc MOSTRALEPALLINERIMASTE
  1464.     End If 
  1465.     If SUONICARICATI=VERO
  1466.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1467.     Else 
  1468.      Bell 30
  1469.     End If 
  1470.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1471.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=3 : Rem b(all)-    
  1472.     If PALLINE>0
  1473.      Dec PALLINE : Proc MOSTRALEPALLINERIMASTE
  1474.     End If 
  1475.     If SUONICARICATI=VERO
  1476.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1477.     Else 
  1478.      Bell 10
  1479.     End If 
  1480.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1481.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=4 : Rem B(ar)+ 
  1482.     If LUNGHEZZADELLABARRA<2
  1483.      Inc LUNGHEZZADELLABARRACAMBIATA
  1484.     End If 
  1485.     If SUONICARICATI=VERO
  1486.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1487.     Else 
  1488.      Bell 30
  1489.     End If 
  1490.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1491.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=5 : Rem B(ar)- 
  1492.     If LUNGHEZZADELLABARRA>0
  1493.      Dec LUNGHEZZADELLABARRACAMBIATA
  1494.     End If 
  1495.     If SUONICARICATI=VERO
  1496.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1497.     Else 
  1498.      Bell 10
  1499.     End If 
  1500.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1501.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=6 : Rem D(uck) 
  1502.     _PAPEROINCAMPO= Not _PAPEROINCAMPO
  1503.     If _PAPEROINCAMPO=VERO
  1504.      If SUONICARICATI=VERO
  1505.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1506.      Else 
  1507.       Bell 30
  1508.      End If 
  1509.     Else 
  1510.      If SUONICARICATI=VERO
  1511.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1512.      Else 
  1513.       Bell 10
  1514.      End If 
  1515.     End If 
  1516.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1517.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=7 : Rem G(lue) 
  1518.     C0LLA= Not C0LLA
  1519.     If C0LLA=VERO
  1520.      If SUONICARICATI=VERO
  1521.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1522.      Else 
  1523.       Bell 30
  1524.      End If 
  1525.     Else 
  1526.      If SUONICARICATI=VERO
  1527.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1528.      Else 
  1529.       Bell 10
  1530.      End If 
  1531.     End If 
  1532.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1533.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=8 : Rem L(aser)+ 
  1534.     If LASER=-1
  1535.      LASER=1
  1536.     Else If LASER=1
  1537.      LASER=2
  1538.     Else If LASER=2
  1539.      LASER=3
  1540.     End If 
  1541.     If SUONICARICATI=VERO
  1542.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1543.     Else 
  1544.      Bell 30
  1545.     End If 
  1546.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1547.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=9 : Rem L(aser)- 
  1548.     If LASER>0
  1549.      Dec LASER
  1550.     End If 
  1551.     If SUONICARICATI=VERO
  1552.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1553.     Else 
  1554.      Bell 10
  1555.     End If 
  1556.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1557.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=10 : Rem N(ext level) 
  1558.     MATTONCINIRIMASTI=MATTONCINI : MATTONCINI=0
  1559.     If SUONICARICATI=VERO
  1560.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1561.     Else 
  1562.      Bell 30
  1563.     End If 
  1564.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1565.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=11 : Rem P(oints)+  
  1566.     If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1567.      If PUNTEGGIO<9999800
  1568.       Add PUNTEGGIO,180
  1569.      End If 
  1570.     Else 
  1571.      If PUNTEGGIO<9999900
  1572.       Add PUNTEGGIO,90
  1573.      End If 
  1574.     End If 
  1575.     Proc MOSTRAILPUNTEGGIO[VERO]
  1576.     If SUONICARICATI=VERO
  1577.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1578.     Else 
  1579.      Bell 30
  1580.     End If 
  1581.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1582.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=12 : Rem P(oints)-  
  1583.     If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1584.      Add PUNTEGGIO,-220
  1585.     Else 
  1586.      Add PUNTEGGIO,-110
  1587.     End If 
  1588.     If PUNTEGGIO<0
  1589.      PUNTEGGIO=0
  1590.     End If 
  1591.     Proc MOSTRAILPUNTEGGIO[VERO]
  1592.     If SUONICARICATI=VERO
  1593.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1594.     Else 
  1595.      Bell 10
  1596.     End If 
  1597.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1598.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=13 : Rem R(ow)+ 
  1599.     If RIGA<3
  1600.      T0GLILARIGA=RIGA : Inc RIGA
  1601.     End If 
  1602.     If SUONICARICATI=VERO
  1603.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1604.     Else 
  1605.      Bell 30
  1606.     End If 
  1607.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1608.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=14 : Rem R(ow)- 
  1609.     If RIGA>0
  1610.      T0GLILARIGA=RIGA
  1611.     End If 
  1612.     If SUONICARICATI=VERO
  1613.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1614.     Else 
  1615.      Bell 30
  1616.     End If 
  1617.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1618.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=15 : Rem S(peed)+ 
  1619.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1620.      If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)<8
  1621.       VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)+0.5
  1622.       If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
  1623.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
  1624.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
  1625.       Else 
  1626.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
  1627.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
  1628.       End If 
  1629.      End If 
  1630.     Next PALLINA
  1631.     If SUONICARICATI=VERO
  1632.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1633.     Else 
  1634.      Bell 30
  1635.     End If 
  1636.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1637.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=16 : Rem S(peed)- 
  1638.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1639.      If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)>0.5
  1640.       VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)-0.5
  1641.       If LAPALLINAHARIMBALZATOSUUNBORDODELLABARRA(PALLINA)
  1642.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
  1643.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
  1644.       Else 
  1645.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
  1646.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
  1647.       End If 
  1648.      End If 
  1649.     Next PALLINA
  1650.     If SUONICARICATI=VERO
  1651.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1652.     Else 
  1653.      Bell 30
  1654.     End If 
  1655.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1656.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=17 : Rem X(treme) 
  1657.     RIMBALZODELLEPALLINESUIMATTONCINI= Not RIMBALZODELLEPALLINESUIMATTONCINI
  1658.     If RIMBALZODELLEPALLINESUIMATTONCINI=FALSO
  1659.      If SUONICARICATI=VERO
  1660.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1661.      Else 
  1662.       Bell 30
  1663.      End If 
  1664.     Else 
  1665.      If SUONICARICATI=VERO
  1666.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1667.      Else 
  1668.       Bell 10
  1669.      End If 
  1670.     End If 
  1671.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1672.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=18 : Rem y+ 
  1673.     If YBARRA<247
  1674.      Add YBARRA,5
  1675.     End If 
  1676.     If SUONICARICATI=VERO
  1677.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1678.     Else 
  1679.      Bell 30
  1680.     End If 
  1681.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1682.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=19 : Rem y- 
  1683.     If YBARRA>197
  1684.      Add YBARRA,-5
  1685.     End If 
  1686.     If SUONICARICATI=VERO
  1687.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1688.     Else 
  1689.      Bell 10
  1690.     End If 
  1691.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1692.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO : Rem ?
  1693.     TIPODIMATTONCINODIPOTENZIAMENTO=Rnd(18)+1
  1694.    End If 
  1695.   Until TIPODIMATTONCINODIPOTENZIAMENTO=0
  1696.  End If 
  1697. End Proc
  1698. Procedure MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
  1699.  ' Check if the specified bonus brick has gone out of the game field
  1700.  If YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>255
  1701.   Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  1702.  End If 
  1703. End Proc
  1704. Procedure METTIILPANNELLO
  1705.  ' Put the panel in the game field
  1706.  XPANNELLO=Screen Width-LARGHEZZAPANNELLO
  1707.  Paste Bob XPANNELLO,0,51 : Paste Bob XPANNELLO,128,52
  1708. End Proc
  1709. Procedure METTIECONTAIMATTONCINI
  1710.  ' Put the bricks in the game field and count them
  1711.  MATTONCINI=0
  1712.  For MATTONCINO=0 To 246
  1713.   If MATTONCINO(MATTONCINO)>0
  1714.    Paste Bob X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO),82+MATTONCINO(MATTONCINO)
  1715.    Inc MATTONCINI
  1716.   Else 
  1717.    Ink 0 : Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  1718.   End If 
  1719.  Next MATTONCINO
  1720. End Proc
  1721. Procedure MOSTRAICREDITI
  1722.  ' Show the credits 
  1723.  CREDITI$="EsseErre Sofware Solutions"+Chr$(10)
  1724.  CREDITI$=CREDITI$+"presents..."+Chr$(10)
  1725.  CREDITI$=CREDITI$+"************"+Chr$(10)
  1726.  CREDITI$=CREDITI$+"* MATTONITE *"+Chr$(10)
  1727.  CREDITI$=CREDITI$+"************"+Chr$(10)
  1728.  CREDITI$=CREDITI$+"by Stefano Regattin"+Chr$(10)
  1729.  CREDITI$=CREDITI$+"piazza Pietro Gasparri, 4/U"+Chr$(10)
  1730.  CREDITI$=CREDITI$+"20161 Milano (Milan) Italia (Italy)"+Chr$(10)
  1731.  CREDITI$=CREDITI$+"http://utenti.tripod.it/esseerre/Stefano.html"+Chr$(10)
  1732.  CREDITI$=CREDITI$+"e-mail: esseerre@lycos.it"+Chr$(10)
  1733.  CREDITI$=CREDITI$+"This game and its editor and the related source"+Chr$(10)
  1734.  CREDITI$=CREDITI$+"codes are freely shared out."+Chr$(10)
  1735.  CREDITI$=CREDITI$+"They have been created by AMOS Professional 2.0"+Chr$(10)
  1736.  CREDITI$=CREDITI$+"and compiled by AMOS Professional Compiler 2.0."+Chr$(10)
  1737.  CREDITI$=CREDITI$+"The source codes don't require any additional"+Chr$(10)
  1738.  CREDITI$=CREDITI$+"extension."+Chr$(10)
  1739.  CREDITI$=CREDITI$+"If you will create a new game starting from these"+Chr$(10)
  1740.  CREDITI$=CREDITI$+"source codes, let me know and don't forget to"+Chr$(10)
  1741.  CREDITI$=CREDITI$+"email me and mention me in your resulting creation."+Chr$(10)
  1742.  CREDITI$=CREDITI$+"One day I have asked to my major sister Antonella"+Chr$(10)
  1743.  CREDITI$=CREDITI$+"if she would liked I created a game for her,"+Chr$(10)
  1744.  CREDITI$=CREDITI$+"assuring her I was able to create almost any"+Chr$(10)
  1745.  CREDITI$=CREDITI$+"kind of game she wanted."+Chr$(10)
  1746.  CREDITI$=CREDITI$+"The answer was yes and she specified a game"+Chr$(10)
  1747.  CREDITI$=CREDITI$+"with a bar, a bouncing ball over the bar and"+Chr$(10)
  1748.  CREDITI$=CREDITI$+"dozens of bricks deletable by the ball hit,"+Chr$(10)
  1749.  CREDITI$=CREDITI$+"gaining points for the hits."+Chr$(10)
  1750.  CREDITI$=CREDITI$+"So I started the developing of this game and"+Chr$(10)
  1751.  CREDITI$=CREDITI$+"she called it Mattonite, that in italian means"+Chr$(10)
  1752.  CREDITI$=CREDITI$+"brickache."+Chr$(10)
  1753.  CREDITI$=CREDITI$+"The purpose of the game is simple: destroy all"+Chr$(10)
  1754.  CREDITI$=CREDITI$+"the bricks by the balls hits to overcome all"+Chr$(10)
  1755.  CREDITI$=CREDITI$+"the levels and collect bonus bricks to improve"+Chr$(10)
  1756.  CREDITI$=CREDITI$+"playability."+Chr$(10)
  1757.  CREDITI$=CREDITI$+"The three flashing cyan digits report the balls"+Chr$(10)
  1758.  CREDITI$=CREDITI$+"left."+Chr$(10)
  1759.  CREDITI$=CREDITI$+"The three flasing orange digits report the"+Chr$(10)
  1760.  CREDITI$=CREDITI$+"current level."+Chr$(10)
  1761.  CREDITI$=CREDITI$+"The three flashing rainbow colours digits report"+Chr$(10)
  1762.  CREDITI$=CREDITI$+"the score position relative to the top hundred"+Chr$(10)
  1763.  CREDITI$=CREDITI$+"scores."+Chr$(10)
  1764.  CREDITI$=CREDITI$+"The seven flashing cyan digits column report"+Chr$(10)
  1765.  CREDITI$=CREDITI$+"the score."+Chr$(10)
  1766.  CREDITI$=CREDITI$+"The seven flashing orange digits column report"+Chr$(10)
  1767.  CREDITI$=CREDITI$+"the first position score."+Chr$(10)
  1768.  CREDITI$=CREDITI$+"The seven flashing rainbow colors digits report"+Chr$(10)
  1769.  CREDITI$=CREDITI$+"the current level bonus."+Chr$(10)
  1770.  CREDITI$=CREDITI$+"Press the space bar to shock the balls."+Chr$(10)
  1771.  CREDITI$=CREDITI$+"Press the shift keys to fire the laser ray over"+Chr$(10)
  1772.  CREDITI$=CREDITI$+"the bricks to hit the boings or, better, to hit"+Chr$(10)
  1773.  CREDITI$=CREDITI$+"the ballthief!"+Chr$(10)
  1774.  CREDITI$=CREDITI$+"Press a (mouse) key to scroll quickly the text"+Chr$(10)
  1775.  CREDITI$=CREDITI$+"or press the Esc key to leave the text."+Chr$(10)
  1776.  CREDITI$=CREDITI$+"This is the end...Enjoy!"
  1777.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CREDITI$,22,22,1,250]
  1778. End Proc
  1779. Procedure MOSTRAILBONUS[M0DO]
  1780.  ' Show the bonus 
  1781.  If M0DO=VERO
  1782.   CIFRA=BONUS/1000000 mod 10
  1783.   Paste Bob 305,120,73+CIFRA
  1784.   CIFRA=BONUS/100000 mod 10
  1785.   Paste Bob 305,138,73+CIFRA
  1786.   CIFRA=BONUS/10000 mod 10
  1787.   Paste Bob 305,156,73+CIFRA
  1788.   CIFRA=BONUS/1000 mod 10
  1789.   Paste Bob 305,174,73+CIFRA
  1790.   CIFRA=BONUS/100 mod 10
  1791.   Paste Bob 305,192,73+CIFRA
  1792.   CIFRA=BONUS/10 mod 10
  1793.   Paste Bob 305,210,73+CIFRA
  1794.   CIFRA=BONUS mod 10
  1795.   Paste Bob 305,228,73+CIFRA
  1796.  Else 
  1797.   CIFRA=BONUS mod 10
  1798.   Paste Bob 305,228,73+CIFRA
  1799.   If CIFRA=9
  1800.    CIFRA=BONUS/10 mod 10
  1801.    Paste Bob 305,210,73+CIFRA
  1802.    If CIFRA=9
  1803.     CIFRA=BONUS/100 mod 10
  1804.     Paste Bob 305,192,73+CIFRA
  1805.     If CIFRA=9
  1806.      CIFRA=BONUS/1000 mod 10
  1807.      Paste Bob 305,174,73+CIFRA
  1808.      If CIFRA=9
  1809.       CIFRA=BONUS/10000 mod 10
  1810.       Paste Bob 305,156,73+CIFRA
  1811.       If CIFRA=9
  1812.        CIFRA=BONUS/100000 mod 10
  1813.        Paste Bob 305,138,73+CIFRA
  1814.        If CIFRA=9
  1815.         CIFRA=BONUS/1000000 mod 10
  1816.         Paste Bob 305,120,73+CIFRA
  1817.        End If 
  1818.       End If 
  1819.      End If 
  1820.     End If 
  1821.    End If 
  1822.   End If 
  1823.  End If 
  1824. End Proc
  1825. Procedure MOSTRAILLASER
  1826.  ' Show the laser beam over the bar 
  1827.  If LASER>0
  1828.   Bob OGGETTOLASER,XBARRA,YBARRA,IMMAGINELASER+LASER
  1829.  Else If LASER=0
  1830.   Proc T0GLIILLASER
  1831.   LASER=-1
  1832.  End If 
  1833. End Proc
  1834. Procedure MOSTRAILLIVELLO
  1835.  ' Shov the level 
  1836.  CIFRA=LIVELLO/100 mod 10
  1837.  Paste Bob 273,29,63+CIFRA
  1838.  CIFRA=LIVELLO/10 mod 10
  1839.  Paste Bob 289,29,63+CIFRA
  1840.  CIFRA=LIVELLO mod 10
  1841.  Paste Bob 305,29,63+CIFRA
  1842. End Proc
  1843. Procedure MOSTRAILPUNTEGGIO[M0DO]
  1844.  ' Show the score 
  1845.  If M0DO=VERO
  1846.   CIFRA=PUNTEGGIO/1000000 mod 10
  1847.   Paste Bob 273,120,53+CIFRA
  1848.   CIFRA=PUNTEGGIO/100000 mod 10
  1849.   Paste Bob 273,138,53+CIFRA
  1850.   CIFRA=PUNTEGGIO/10000 mod 10
  1851.   Paste Bob 273,156,53+CIFRA
  1852.   CIFRA=PUNTEGGIO/1000 mod 10
  1853.   Paste Bob 273,174,53+CIFRA
  1854.   CIFRA=PUNTEGGIO/100 mod 10
  1855.   Paste Bob 273,192,53+CIFRA
  1856.   CIFRA=PUNTEGGIO/10 mod 10
  1857.   Paste Bob 273,210,53+CIFRA
  1858.   CIFRA=PUNTEGGIO mod 10
  1859.   Paste Bob 273,228,53+CIFRA
  1860.  Else 
  1861.   CIFRA=PUNTEGGIO mod 10
  1862.   Paste Bob 273,228,53+CIFRA
  1863.   If CIFRA=0
  1864.    CIFRA=PUNTEGGIO/10 mod 10
  1865.    Paste Bob 273,210,53+CIFRA
  1866.    If CIFRA=0
  1867.     CIFRA=PUNTEGGIO/100 mod 10
  1868.     Paste Bob 273,192,53+CIFRA
  1869.     If CIFRA=0
  1870.      CIFRA=PUNTEGGIO/1000 mod 10
  1871.      Paste Bob 273,174,53+CIFRA
  1872.      If CIFRA=0
  1873.       CIFRA=PUNTEGGIO/10000 mod 10
  1874.       Paste Bob 273,156,53+CIFRA
  1875.       If CIFRA=0
  1876.        CIFRA=PUNTEGGIO/100000 mod 10
  1877.        Paste Bob 273,138,53+CIFRA
  1878.        If CIFRA=0
  1879.         CIFRA=PUNTEGGIO/1000000 mod 10
  1880.         Paste Bob 273,120,53+CIFRA
  1881.        End If 
  1882.       End If 
  1883.      End If 
  1884.     End If 
  1885.    End If 
  1886.   End If 
  1887.  End If 
  1888.  If PUNTEGGIO>PUNTEGGIOMASSIMO
  1889.   PUNTEGGIOMASSIMO=PUNTEGGIO
  1890.  End If 
  1891.  Proc MOSTRAILPUNTEGGIOMASSIMO[M0DO]
  1892.  Proc MOSTRALAPOSIZIONE
  1893. End Proc
  1894. Procedure MOSTRAILPUNTEGGIOMASSIMO[M0DO]
  1895.  ' Show the best score
  1896.  If M0DO=VERO
  1897.   CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
  1898.   Paste Bob 289,120,63+CIFRA
  1899.   CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
  1900.   Paste Bob 289,138,63+CIFRA
  1901.   CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
  1902.   Paste Bob 289,156,63+CIFRA
  1903.   CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
  1904.   Paste Bob 289,174,63+CIFRA
  1905.   CIFRA=PUNTEGGIOMASSIMO/100 mod 10
  1906.   Paste Bob 289,192,63+CIFRA
  1907.   CIFRA=PUNTEGGIOMASSIMO/10 mod 10
  1908.   Paste Bob 289,210,63+CIFRA
  1909.   CIFRA=PUNTEGGIOMASSIMO mod 10
  1910.   Paste Bob 289,228,63+CIFRA
  1911.  Else 
  1912.   CIFRA=PUNTEGGIOMASSIMO mod 10
  1913.   Paste Bob 289,228,63+CIFRA
  1914.   If CIFRA=0
  1915.    CIFRA=PUNTEGGIOMASSIMO/10 mod 10
  1916.    Paste Bob 289,210,63+CIFRA
  1917.    If CIFRA=0
  1918.     CIFRA=PUNTEGGIOMASSIMO/100 mod 10
  1919.     Paste Bob 289,192,63+CIFRA
  1920.     If CIFRA=0
  1921.      CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
  1922.      Paste Bob 289,174,63+CIFRA
  1923.      If CIFRA=0
  1924.       CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
  1925.       Paste Bob 289,156,63+CIFRA
  1926.       If CIFRA=0
  1927.        CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
  1928.        Paste Bob 289,138,63+CIFRA
  1929.        If CIFRA=0
  1930.         CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
  1931.         Paste Bob 289,120,63+CIFRA
  1932.        End If 
  1933.       End If 
  1934.      End If 
  1935.     End If 
  1936.    End If 
  1937.   End If 
  1938.  End If 
  1939. End Proc
  1940. Procedure MOSTRAILRAGGIOLASER
  1941.  ' Show the laser ray 
  1942.  If RAGGIOLASERSPARATO=VERO
  1943.   Bob OGGETTORAGGIOLASER,XLASER,YLASER,IMMAGINERAGGIOLASER
  1944.   If RAGGIOLASERRIFLESSO=VERO
  1945.    If YLASER<255
  1946.     Add YLASER,5
  1947.    Else 
  1948.     Proc CANCELLAILRAGGIOLASER
  1949.    End If 
  1950.   Else 
  1951.    If YLASER>0
  1952.     Add YLASER,-5
  1953.    Else 
  1954.     Proc CANCELLAILRAGGIOLASER
  1955.    End If 
  1956.   End If 
  1957.   Bob Update 
  1958.  End If 
  1959. End Proc
  1960. Procedure MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  1961.  ' Show the top hundred player scores 
  1962.  If Exist(PUNTEGGI$)
  1963.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CENTOGIOCATORI$,20,22,1,250]
  1964.  Else 
  1965.   NONCISONOGIOCATORI$="No players till now..."+Chr$(10)
  1966.   NONCISONOGIOCATORI$=NONCISONOGIOCATORI$+"Press a (mouse) key to continue"
  1967.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONCISONOGIOCATORI$,21,20,1,250]
  1968.  End If 
  1969. End Proc
  1970. Procedure MOSTRALABARRA
  1971.  ' Show the bar 
  1972.  If LUNGHEZZADELLABARRA=0
  1973.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,5
  1974.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,6
  1975.  Else If LUNGHEZZADELLABARRA=1
  1976.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,1
  1977.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,2
  1978.  Else If LUNGHEZZADELLABARRA=2
  1979.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,3
  1980.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,4
  1981.  End If 
  1982. End Proc
  1983. Procedure MOSTRALAPOSIZIONE
  1984.  ' Show the current player position 
  1985.  For POSIZIONE=1 To 100
  1986.   If PUNTEGGIO>Val(PUNTEGGIO$(POSIZIONE-1))
  1987.    Exit 
  1988.   Else If PUNTEGGIO$(POSIZIONE-1)=""
  1989.    Exit 
  1990.   End If 
  1991.  Next POSIZIONE
  1992.  CIFRA=POSIZIONE/100 mod 10
  1993.  Paste Bob 273,47,73+CIFRA
  1994.  CIFRA=POSIZIONE/10 mod 10
  1995.  Paste Bob 289,47,73+CIFRA
  1996.  CIFRA=POSIZIONE mod 10
  1997.  Paste Bob 305,47,73+CIFRA
  1998. End Proc
  1999. Procedure MOSTRALARIGA[TIPODIRIGA]
  2000.  ' Show the row 
  2001.  If TIPODIRIGA=1
  2002.   IMMAGINERIGA=IMMAGINERIGAUNO
  2003.  Else If TIPODIRIGA=2
  2004.   IMMAGINERIGA=IMMAGINERIGADUE
  2005.  Else If TIPODIRIGA=3
  2006.   IMMAGINERIGA=IMMAGINERIGATRE
  2007.  End If 
  2008.  If XRIGA>0
  2009.   Bob OGGETTORIGA,XRIGA,251,IMMAGINERIGA
  2010.  Else 
  2011.   Proc T0GLILARIGA
  2012.   T0GLILARIGA=0
  2013.  End If 
  2014.  Bob Update 
  2015. End Proc
  2016. Procedure MOSTRALEPALLINERIMASTE
  2017.  ' Show the remained balls
  2018.  PALLINERIMASTE=PALLINE-1
  2019.  CIFRA=PALLINERIMASTE/100 mod 10
  2020.  Paste Bob 273,11,53+CIFRA
  2021.  CIFRA=PALLINERIMASTE/10 mod 10
  2022.  Paste Bob 289,11,53+CIFRA
  2023.  CIFRA=PALLINERIMASTE mod 10
  2024.  Paste Bob 305,11,53+CIFRA
  2025. End Proc
  2026. Procedure _PAPEROINCAMPO
  2027.  ' Manage the duck
  2028.  Bob OGGETTOPAPERO,XPAPERO,YPAPERO,IMMAGINEPAPERO(IMMAGINEPAPERO)
  2029.  Inc IMMAGINEPAPERO : If IMMAGINEPAPERO=IMMAGINIPAPERO Then IMMAGINEPAPERO=0
  2030.  If MATTONCINODATROVAREPERILPAPERO<247
  2031.   If MATTONCINO(MATTONCINODATROVAREPERILPAPERO)>0
  2032.    XMATTONCINOPERILPAPERO=X0ZONA(MATTONCINODATROVAREPERILPAPERO)-XPAPERO
  2033.    YMATTONCINOPERILPAPERO=Y0ZONA(MATTONCINODATROVAREPERILPAPERO)-YPAPERO
  2034.    If Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)<DISTANZADELMATTONCINOPIUVICINOALPAPERO
  2035.     DISTANZADELMATTONCINOPIUVICINOALPAPERO=Abs(XMATTONCINOPERILPAPERO)+Abs(YMATTONCINOPERILPAPERO)
  2036.     MATTONCINOPERILPAPERO=MATTONCINODATROVAREPERILPAPERO
  2037.    End If 
  2038.   End If 
  2039.   Add MATTONCINODATROVAREPERILPAPERO,1,0 To 247
  2040.  Else 
  2041.   DISTANZADELMATTONCINOPIUVICINOALPAPERO=1000
  2042.   XDISTANZADELPAPERODALMATTONCINOPIUVICINO=X0ZONA(MATTONCINOPERILPAPERO)+10-XPAPERO
  2043.   If XDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
  2044.    Inc XPAPERO
  2045.   Else If XDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
  2046.    Dec XPAPERO
  2047.   End If 
  2048.   YDISTANZADELPAPERODALMATTONCINOPIUVICINO=Y0ZONA(MATTONCINOPERILPAPERO)+5-YPAPERO
  2049.   If YDISTANZADELPAPERODALMATTONCINOPIUVICINO>0
  2050.    Inc YPAPERO
  2051.   Else If YDISTANZADELPAPERODALMATTONCINOPIUVICINO<0
  2052.    Dec YPAPERO
  2053.   End If 
  2054.   If XDISTANZADELPAPERODALMATTONCINOPIUVICINO=0 and YDISTANZADELPAPERODALMATTONCINOPIUVICINO=0
  2055.    If MATTONCINO(MATTONCINOPERILPAPERO)>0
  2056.     X0MATTONCINO=X0ZONA(MATTONCINOPERILPAPERO)
  2057.     Y0MATTONCINO=Y0ZONA(MATTONCINOPERILPAPERO)
  2058.     X1MATTONCINO=X0MATTONCINO+19
  2059.     Y1MATTONCINO=Y0MATTONCINO+9
  2060.     Proc CANCELLAILPAPERO
  2061.     Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
  2062.     Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  2063.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINOPERILPAPERO,Rnd(9)]
  2064.     MATTONCINO(MATTONCINOPERILPAPERO)=0
  2065.    Else 
  2066.     MATTONCINODATROVAREPERILPAPERO=0
  2067.    End If 
  2068.   End If 
  2069.  End If 
  2070. End Proc
  2071. Procedure RIDISEGNODELMATTONCINO[MATTONCINO,DURATADELRIDISEGNODELMATTONCINO]
  2072.  ' Redraw the hitted bricks 
  2073.  For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  2074.   If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  2075.    MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  2076.    DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  2077.   Else If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
  2078.    MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  2079.    DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  2080.    Pop Proc
  2081.   End If 
  2082.  Next MATTONCINODARIDISEGNARE
  2083. End Proc
  2084. Procedure RIMETTILOSFONDO
  2085.  ' Redraw the screen
  2086.  Put Block 1
  2087. End Proc
  2088. Procedure RUBAPALLINAINCAMPO
  2089.  If PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  2090.   PALLINA=Rnd(MASSIMOPALLINEINCAMPO-1)
  2091.   If PALLINA(PALLINA)=VERO
  2092.    PALLINASCELTADALRUBAPALLINA=PALLINA
  2093.    YRUBAPALLINA=0
  2094.    If SUONICARICATI=VERO
  2095.     Sam Play 13 : Proc VOCESEGUENTE
  2096.    Else 
  2097.     Bell 4
  2098.    End If 
  2099.   End If 
  2100.  Else 
  2101.   Bob OGGETTORUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINERUBAPALLINA(IMMAGINERUBAPALLINA)
  2102.   If PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  2103.    If PALLINA(PALLINASCELTADALRUBAPALLINA)=VERO
  2104.     XPALLINA=Int(XPALLINA#(PALLINASCELTADALRUBAPALLINA))
  2105.     YPALLINA=Int(YPALLINA#(PALLINASCELTADALRUBAPALLINA))
  2106.     XRUBAPALLINA=XPALLINA
  2107.     If YRUBAPALLINA>YPALLINA
  2108.      Dec YRUBAPALLINA
  2109.     Else If YRUBAPALLINA<YPALLINA
  2110.      Inc YRUBAPALLINA
  2111.     Else 
  2112.      PALLINAPRESADALRUBAPALLINA=PALLINASCELTADALRUBAPALLINA
  2113.      PALLINA(PALLINAPRESADALRUBAPALLINA)=FALSO
  2114.     End If 
  2115.    Else 
  2116.     PALLINASCELTADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  2117.     PALLINAPRESADALRUBAPALLINA=MASSIMOPALLINEINCAMPO
  2118.    End If 
  2119.   Else 
  2120.    Bob OGGETTOPALLINA+PALLINAPRESADALRUBAPALLINA,XRUBAPALLINA,YRUBAPALLINA,IMMAGINEPALLINA
  2121.    Add XRUBAPALLINA,Rnd(6)-3
  2122.    Proc LIMITI[XRUBAPALLINA,11,XFINALERIGA-11] : XRUBAPALLINA=Param
  2123.    Dec YRUBAPALLINA
  2124.    If RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA=0
  2125.     If SUONICARICATI=VERO
  2126.      Sam Play 14 : Proc VOCESEGUENTE
  2127.     Else 
  2128.      Bell 4
  2129.     End If 
  2130.    End If 
  2131.    Add RITARDODELLARIPETIZIONEDELSUONODELLAPALLINARUBATA,1,0 To 99
  2132.    Proc ILRUBAPALLINAEUSCITODALCAMPODIGIOCO
  2133.   End If 
  2134.   Proc ILRUBAPALLINAESTATOCOLPITO
  2135.  End If 
  2136. End Proc
  2137. Procedure SALVAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  2138.  ' Save the top hundred scores
  2139.  If Exist(PUNTEGGI$) Then Kill PUNTEGGI$
  2140.  Open Out 1,PUNTEGGI$
  2141.  For POSIZIONI=0 To 99
  2142.   If Val(PUNTEGGIO$(POSIZIONI))>0
  2143.    Print #1,GIOCATORE$(POSIZIONI)
  2144.    Print #1,PUNTEGGIO$(POSIZIONI)
  2145.   End If 
  2146.  Next POSIZIONI
  2147.  Close 1
  2148. End Proc
  2149. Procedure TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTO$,C0LORETESTOPRIMALINEA,C0LORETESTOSECONDALINEA,C0LOREBORDO,TEMP0]
  2150.  ' Manage the texts 
  2151.  If TESTO$="" Then Get Block 1,0,0,Screen Width,Screen Height
  2152.  ALTEZZALINEA=ALTEZZAFONT+3
  2153.  LINEE=1
  2154.  POSIZIONEPAROLA=1
  2155.  Repeat 
  2156.   ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
  2157.   If ACAPO>0 Then Inc LINEE : POSIZIONEPAROLA=ACAPO+1
  2158.  Until ACAPO=0
  2159.  If LINEE=1
  2160.   C0LORETESTO=C0LORETESTOPRIMALINEA
  2161.   XINIZIOTESTO=(Screen Width-Text Length(TESTO$))/2
  2162.   YINIZIOTESTO=(Screen Height-(ALTEZZALINEA))/2+Text Base
  2163.   Proc RIMETTILOSFONDO
  2164.   Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  2165.   Proc _ASPETTA[TEMP0]
  2166.   If TASTO=27
  2167.    Pop Proc
  2168.   End If 
  2169.  Else 
  2170.   Dim TESTO$(LINEE-1)
  2171.   POSIZIONEPAROLA=1
  2172.   For LINEA=0 To LINEE-1
  2173.    ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
  2174.    If ACAPO>0
  2175.     TESTO$(LINEA)=Mid$(TESTO$,POSIZIONEPAROLA,ACAPO-POSIZIONEPAROLA)
  2176.     POSIZIONEPAROLA=ACAPO+1
  2177.    Else 
  2178.     TESTO$(LINEA)=Right$(TESTO$,Len(TESTO$)-POSIZIONEPAROLA+1)
  2179.    End If 
  2180.   Next LINEA
  2181.   ALTEZZATESTO=ALTEZZALINEA*LINEE
  2182.   If ALTEZZATESTO<Screen Height
  2183.    ILTESTOSTATUTTONELLOSCHERMO=VERO
  2184.   Else 
  2185.    For LINEA=LINEE To 2 Step -1
  2186.     ALTEZZATESTO=ALTEZZALINEA*LINEA
  2187.     If ALTEZZATESTO<Screen Height
  2188.      NUMEROMASSIMODILINEENELLOSCHERMO=LINEA
  2189.      Exit 
  2190.     End If 
  2191.    Next LINEA
  2192.   End If 
  2193.   If ILTESTOSTATUTTONELLOSCHERMO=VERO
  2194.    Proc RIMETTILOSFONDO
  2195.    YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
  2196.    For LINEA=0 To LINEE-1
  2197.     If LINEA mod 2=0
  2198.      C0LORETESTO=C0LORETESTOPRIMALINEA
  2199.     Else 
  2200.      C0LORETESTO=C0LORETESTOSECONDALINEA
  2201.     End If 
  2202.     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
  2203.     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
  2204.    Next LINEA
  2205.    Proc _ASPETTA[TEMP0]
  2206.    If TASTO=27
  2207.     Pop Proc
  2208.    End If 
  2209.   Else 
  2210.    Proc RIMETTILOSFONDO
  2211.    YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
  2212.    For LINEA=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
  2213.     If(LINEA) mod 2=0
  2214.      C0LORETESTO=C0LORETESTOPRIMALINEA
  2215.     Else 
  2216.      C0LORETESTO=C0LORETESTOSECONDALINEA
  2217.     End If 
  2218.     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
  2219.     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
  2220.    Next LINEA
  2221.    Proc _ASPETTA[TEMP0*NUMEROMASSIMODILINEENELLOSCHERMO]
  2222.    If TASTO=27
  2223.     Pop Proc
  2224.    End If 
  2225.    For LINEA=1 To LINEE-NUMEROMASSIMODILINEENELLOSCHERMO
  2226.     Proc RIMETTILOSFONDO
  2227.     For LINEANELLOSCHERMO=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
  2228.      If(LINEA+LINEANELLOSCHERMO) mod 2=0
  2229.       C0LORETESTO=C0LORETESTOPRIMALINEA
  2230.      Else 
  2231.       C0LORETESTO=C0LORETESTOSECONDALINEA
  2232.      End If 
  2233.      XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEANELLOSCHERMO+LINEA)))/2
  2234.      Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEANELLOSCHERMO,TESTO$(LINEANELLOSCHERMO+LINEA),C0LORETESTO,C0LOREBORDO]
  2235.     Next LINEANELLOSCHERMO
  2236.     Proc _ASPETTA[TEMP0]
  2237.     If TASTO=27
  2238.      Pop Proc
  2239.     End If 
  2240.    Next LINEA
  2241.   End If 
  2242.  End If 
  2243. End Proc
  2244. Procedure T0GLILARCOBALENO
  2245.  ' Fade out the rainbow 
  2246.  For LINEADELLARCOBALENO=271 To 271-255 Step -1
  2247.   Rainbow 0,257,0,LINEADELLARCOBALENO
  2248.   Wait Vbl 
  2249.  Next LINEADELLARCOBALENO
  2250. End Proc
  2251. Procedure T0GLILARIGA
  2252.  ' Turn off the row 
  2253.  Bob Off OGGETTORIGA
  2254. End Proc
  2255. Procedure T0GLIILLASER
  2256.  ' Turn off the laser beam
  2257.  Bob Off OGGETTOLASER
  2258.  Bob Update 
  2259. End Proc
  2260. Procedure T0GLIILPANNELLO
  2261.  ' Fade out the panel 
  2262.  Ink 0
  2263.  For LINEAPANNELLO=255 To 0 Step -1
  2264.   Draw XPANNELLO,LINEAPANNELLO To XPANNELLO+LARGHEZZAPANNELLO-1,LINEAPANNELLO
  2265.   Wait Vbl 
  2266.  Next LINEAPANNELLO
  2267. End Proc
  2268. Procedure T0GLIIMATTONCINI
  2269.  ' Fade out the bricks
  2270.  Ink 0
  2271.  For MATTONCINO=246 To 0 Step -1
  2272.   If MATTONCINO(MATTONCINO)>0
  2273.    Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  2274.    Wait Vbl 
  2275.   End If 
  2276.  Next MATTONCINO
  2277. End Proc
  2278. Procedure TROVAILFONTDATA70
  2279.  ' Look for the Data70 font 
  2280.  TESTOFONTEDICARATTERE$="I am looking for the Data70 font..."+Chr$(10)
  2281.  TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"...in your FONTS: drawer."+Chr$(10)
  2282.  TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Wait for a moment, please..."
  2283.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,0]
  2284.  Get Disc Fonts 
  2285.  For FONTEDICARATTERE=1 To 65535
  2286.   FONTEDICARATTERE$=Left$(Font$(FONTEDICARATTERE),30)-" "
  2287.   If FONTEDICARATTERE$="Data70.font" Then Exit 
  2288.  Next FONTEDICARATTERE
  2289.  If FONTEDICARATTERE<65536
  2290.   Set Font FONTEDICARATTERE
  2291.   ALTEZZAFONT=Val(Mid$(Font$(FONTEDICARATTERE),31,2)-" ")
  2292.   TESTOFONTEDICARATTERE$="The font I am using is the Data70 font! :)"+Chr$(10)
  2293.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
  2294.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
  2295.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,250]
  2296.  Else 
  2297.   TESTOFONTEDICARATTERE$="The font I am using is the Topaz font! :("+Chr$(10)
  2298.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
  2299.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
  2300.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,18,18,19,250]
  2301.  End If 
  2302.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  2303. End Proc
  2304. Procedure VOCESEGUENTE
  2305.  ' Select the next audio voice for the next sound 
  2306.  Add VOCE,VOCE : If VOCE=16 Then VOCE=1
  2307. End Proc